Comprender la visi贸n computarizada

1

驴Por qu茅 aprender computer vision?

2

驴Qu茅 es la visi贸n computarizada?

3

Tipos de visi贸n computarizada

4

Introducci贸n a object detection: clasificaci贸n + localizaci贸n

5

Aprende a identificar problemas

Dimensionamiento de proyecto de visi贸n computarizada

6

C贸mo definir los tiempos de tu proyecto

7

C贸mo costear tu proyecto

8

C贸mo identificar los roles necesarios en el proyecto

9

Producto m铆nimo viable en computer vision

Obtenci贸n y procesamiento de los datos

10

Obtenci贸n de datos para tu proyecto

11

Limpieza de la base de datos

12

Distribuci贸n de datos en entrenamiento y testeo

13

Etiquetado de los datos de test

14

Etiquetado de los datos de train

15

Transforma tu base de datos a TFRecord

16

Transformar CSV a TFRecord

Entrena, testea y optimiza tus modelos

17

Librer铆as a importar durante fase de entrenamiento

18

Fase de entrenamiento del modelo

19

Balanceo de im谩genes y data augmentation

20

Entrena, evalua y optimiza con TensorBoard

21

Validaci贸n de modelo en un entorno de ejecuci贸n

22

Re-entrenamiento del modelo para obtener mejores resultados

23

Seguimiento de centroides con OpenCV

24

Configuraci贸n de los centroides con OpenCV

25

Algoritmo de direcci贸n y conteo con OpenCV

26

Crea un ciclo de entrenamiento de tu modelo: MLOps

Producto con visi贸n computarizada en producci贸n

27

Prepara tu entorno en Google Cloud Platform

28

Carga y preprocesamiento de modelos

29

Postprocesamiento de modelos

30

Despliega y consume tu modelo en producci贸n

31

Bonus: aprende a apagar las m谩quinas de GCP para evitar sobrecostos

Siguientes pasos en inteligencia artificial

32

Siguientes pasos en inteligencia artificial

33

Comparte tu proyecto de detecci贸n de veh铆culos en carretera y certif铆cate

You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
11 Hrs
8 Min
0 Seg

Configuraci贸n de los centroides con OpenCV

24/33
Resources

Contributions 4

Questions 0

Sort by:

Want to see more contributions, questions and answers from the community?

Hubiese sido genial que en esta clase se hubiese usado mas recursos visuales para entender lo que se esta haciendo.

Me imagino que esta divisi贸n de los frames depende tambi茅n de la velocidad con que se realiz贸 la grabaci贸n, osea si se grab贸 a 24 fps se realizara la divisi贸n por 24, y as铆 sucesivamente.

Configurar correctamente el seguimiento de centroides en OpenCV implica ajustar varios par谩metros para detectar y seguir los objetos de inter茅s de manera m谩s precisa. Aqu铆 algunos pasos que puedes tomar para mejorar y configurar el seguimiento de centroides en OpenCV: \### 1. \*\*Ajustar el M茅todo de Segmentaci贸n\*\* La segmentaci贸n es clave para detectar correctamente los objetos. Puedes experimentar con m茅todos de segmentaci贸n como: \- \*\*Umbral Adaptativo\*\*: Ayuda cuando la iluminaci贸n no es uniforme en la imagen. ```python thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE\_THRESH\_GAUSSIAN\_C, cv2.THRESH\_BINARY, 11, 2) ``` \- \*\*Segmentaci贸n por Color\*\*: Si los objetos tienen colores espec铆ficos, puedes usar m谩scaras de color en el espacio de color HSV. ```python hsv = cv2.cvtColor(frame, cv2.COLOR\_BGR2HSV) lower\_color = np.array(\[H\_min, S\_min, V\_min]) # Ajusta estos valores upper\_color = np.array(\[H\_max, S\_max, V\_max]) # Ajusta estos valores mask = cv2.inRange(hsv, lower\_color, upper\_color) ``` \- \*\*Detecci贸n de Bordes (Canny)\*\*: Puede ayudar a detectar contornos en objetos con bordes definidos. ```python edges = cv2.Canny(gray, 100, 200) ``` \### 2. \*\*Filtrado de Contornos por Tama帽o o Forma\*\* Para evitar la detecci贸n de ruido o peque帽os objetos, filtra los contornos seg煤n su 谩rea o forma: ```python min\_area = 500 # 脕rea m铆nima del contorno for contour in contours: if cv2.contourArea(contour) > min\_area: \# Procesar el contorno si cumple con el 谩rea m铆nima \# ... ``` \### 3. \*\*Suavizar el Video (Filtro Gaussiano o Blur)\*\* Aplicar un filtro Gaussiano antes de la detecci贸n puede ayudar a reducir el ruido en la imagen: ```python gray = cv2.GaussianBlur(gray, (5, 5), 0) ``` \### 4. \*\*Configuraci贸n del C谩lculo del Centroide\*\* Aseg煤rate de que el c谩lculo del centroide se haga correctamente usando momentos. Si trabajas con varios objetos, puedes asignar un identificador 煤nico a cada uno y seguirlos en cada fotograma. ```python M = cv2.moments(contour) if M\["m00"] != 0: cX = int(M\["m10"] / M\["m00"]) cY = int(M\["m01"] / M\["m00"]) ``` \### 5. \*\*A帽adir Estabilidad al Centroide (Filtro de Promedio)\*\* Si el centroide var铆a mucho, puedes suavizar su movimiento usando un promedio m贸vil para estabilizar el seguimiento. ```python alpha = 0.7 # Factor de suavizado (entre 0 y 1) cX\_smooth = int(alpha \* prev\_cX + (1 - alpha) \* cX) cY\_smooth = int(alpha \* prev\_cY + (1 - alpha) \* cY) ``` \### 6. \*\*Usar Algoritmos de Seguimiento Adicionales\*\* Si necesitas una mayor estabilidad en el seguimiento, puedes usar algoritmos como el filtro de Kalman o los trackers de OpenCV para una mejora considerable en la predicci贸n y seguimiento de trayectorias. ```python tracker = cv2.TrackerCSRT\_create() # Puedes cambiar el tipo de tracker tracker.init(frame, bbox) # bbox es el cuadro delimitador inicial del objeto ``` \### Ejemplo Completo Aqu铆 tienes un ejemplo de c贸digo que combina algunos de estos ajustes: ```python import cv2 import numpy as np \# Abre el video cap = cv2.VideoCapture('video.mp4') min\_area = 500 # 脕rea m铆nima para considerar un contorno v谩lido \# Variables para suavizar el centroide alpha = 0.7 prev\_cX, prev\_cY = 0, 0 while True: ret, frame = cap.read() if not ret: break \# Conversi贸n a escala de grises y suavizado gray = cv2.cvtColor(frame, cv2.COLOR\_BGR2GRAY) gray = cv2.GaussianBlur(gray, (5, 5), 0) \# Umbralizaci贸n adaptativa para segmentar thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE\_THRESH\_GAUSSIAN\_C, cv2.THRESH\_BINARY, 11, 2) \# Encontrar contornos contours, \_ = cv2.findContours(thresh, cv2.RETR\_EXTERNAL, cv2.CHAIN\_APPROX\_SIMPLE) for contour in contours: if cv2.contourArea(contour) > min\_area: M = cv2.moments(contour) if M\["m00"] != 0: cX = int(M\["m10"] / M\["m00"]) cY = int(M\["m01"] / M\["m00"]) \# Suavizar la posici贸n del centroide cX\_smooth = int(alpha \* prev\_cX + (1 - alpha) \* cX) cY\_smooth = int(alpha \* prev\_cY + (1 - alpha) \* cY) \# Actualizar las posiciones anteriores prev\_cX, prev\_cY = cX\_smooth, cY\_smooth \# Dibuja el centroide cv2.circle(frame, (cX\_smooth, cY\_smooth), 7, (0, 255, 0), -1) cv2.putText(frame, f"({cX\_smooth}, {cY\_smooth})", (cX\_smooth + 10, cY\_smooth), cv2.FONT\_HERSHEY\_SIMPLEX, 0.5, (0, 255, 0), 2) \# Mostrar el resultado cv2.imshow("Seguimiento de Centroides", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` \### Descripci贸n de los Pasos: 1\. \*\*Umbralizaci贸n Adaptativa\*\*: Segmenta la imagen sin depender de un umbral fijo, lo cual es 煤til en condiciones de iluminaci贸n variable. 2\. \*\*Filtrado de Contornos por 脕rea\*\*: Asegura que solo se rastrean los objetos relevantes. 3\. \*\*Suavizado de Centroide\*\*: Suaviza el movimiento del centroide para evitar fluctuaciones r谩pidas. Estas configuraciones ayudan a mejorar la detecci贸n y el seguimiento de centroides en OpenCV, especialmente en situaciones de video en tiempo real o donde la iluminaci贸n puede variar.
La calidad de las clases ha ido disminuyendo, parece que me un铆 a un meet y el profesor iba explicando del tir贸n, a diferencia de las clases anteriores donde al menos se dedicaban tiempo de hacer visuales.