Actualmente estoy trabajando en el proyecto de procesamiento de imágenes. Estoy usando Opencv2.3.1 con VC++. He escrito el código de tal manera que la imagen de entrada se filtra solo al color azul y se convierte en una imagen binaria. La imagen binaria tiene algunos objetos pequeños que no quiero. Quería eliminar esos objetos pequeños, así que utilicé el método cvFindContours()
de openCV para detectar contornos en una imagen binaria. pero el problema es que no puedo eliminar los objetos pequeños en la salida de la imagen. Usé la función cvContourArea()
, pero no funcionó correctamente ..., la función erosionar tampoco funcionó correctamente.Contornos opencv: Cómo eliminar pequeños contornos en una imagen binaria
Así que por favor alguien que me ayude con este problema ..
La imagen binaria que obtuve:
La imagen resultante/salida que quiero para obtener:
Gracias por la sugerencia, pero no entiendo cómo escribir el código para encontrar el área de cada blob/contorno que se ha detectado. El código que he escrito está en el siguiente enlace. ¿Puedes corregirlo y responder? : http://textuploader.com/?p=6&id=YwRl. –
¡oh! Me acabo de olvidar, el encabezado y el archivo cpp de cvutility se pueden encontrar en estos enlaces: http: //textuploader.com/? P = 6 & id = Dtnvj http://textuploader.com/?p=6&id=TSlRQ Incluirlos en directorio de origen e incluir rutas. –
No estoy muy familiarizado con la api C, pero parece que solo estás calculando el área del primer contorno. Necesita iterar a través de los contornos y solo dibujar los con área> algún umbral. Si solo está tratando de encontrar ese objeto, debe dibujar el contorno con el área más grande. – fferen