Opencv Flood Fill Binary Options


¿Cuál es el significado de rango flotante y rango fijo dado en la documentación de la función floodfill. Utilicé la función floodfill a una imagen en escala de grises que se muestra a continuación. La imagen tiene tres regiones de diferentes intensidades. Rectángulo exterior 170 elipse interior 175 rectángulo interior 180 Quiero inundar las regiones de 170 y 175 juntas como un solo componente conectado y la región con 180 como separado. Modifiqué el código de aquí y funciono como sigue: Utilicé el rango fijo usando la bandera CVFLOODFILLFIXEDRANGE (es correcto la manera que utilicé) especifico el loDiff0 y upDiff6. Yo esperaba que cuando la semilla se convierte en 170, todos los puntos en el rango de 170-0 a 1706, es decir, 170 a 176 (rectángulo exterior amp elipse interior) están llenos de agua con la misma etiqueta y ya que el rectángulo interior es 180, tendría etiqueta diferente. Sin embargo obtengo la salida como abajo: - el rectángulo exterior y la elipse interna no están teniendo la misma etiqueta. ¿Cuál podría ser el error esperado o / p. La elipse interna también es de color naranja (lo mismo que el rectángulo exterior), pero no entiendo por qué es etiquetar el rectángulo exterior y la elipse de forma diferente y utilizó CVFLOODFILLFIXEDRANGE porque el motivo de este qn es saber lo que flotante y fija gama significa. Si uso rango flotante obtengo el esperado o / p. No con CVFLOODFILLFIXEDRANGE (que he utilizado en mi código) ndash Karthik Murugan Feb 20 13 at 8: 13Here es un ejemplo de imágenes binarias, es decir, como entrada tenemos una imageByteArray con 2 posibles valores: 0 y 255. La imagen contiene algún borde del documento en un fondo. La tarea consiste en eliminar, disminuir la cantidad de píxeles de fondo con un impacto mínimo en los píxeles del borde. La pregunta es qué algoritmos modernos, las técnicas existen para hacer esto Lo que no espero como una respuesta: el uso borroso gaussiano para deshacerse del ruido de fondo, el uso de algoritmo bitonal (Canny, Sobel, etc) umbrales o el uso de Hough Loco en tal ruido no importa qué opciones se fijan) La solución más simple es detectar todos los contornos y filtrar hacia fuera los con la longitud más baja. Esto funciona bien, pero a veces dependiendo de una imagen también borrará los píxeles de borde útiles bastante. Actualización: Como entrada, tengo una imagen RGB estándar con un documento (identificación de licencia de conducir, cheque, factura, tarjeta de crédito) en algún fondo. La tarea principal es detectar los bordes del documento. Los siguientes pasos son bastante conocidos: escala de grises, desenfoque, binarización Sobel, probabilístico Hough, encontrar rectángulo o trapecio (si la forma de trapecio que se encuentra a continuación, vaya a la transformación perspectiva). En los fondos de contraste simple todo funciona bien. La razón por la que estoy preguntando acerca de la reducción de ruido es que tengo que trabajar con miles de fondos y algunos de ellos dan ruido no importa qué opciones se utilizan. El ruido causará líneas adicionales sin importar cómo se configure Hough y otras líneas pueden engañar a la lógica posterior y afectar seriamente el rendimiento. (Se implementa en java script, sin soporte OpenCV o GPU). Me preguntó 10 de diciembre a las 12:27 Supongo que quería decir la imagen binaria en lugar de bitónico. ¿La segmentación basada en relleno de inundación para cada píxel conjunto crea una máscara / mapa de su área Sólo píxeles de relleno de relleno de relleno con conexión de 4 o 8 vecinos y contar cuántos píxeles que llena. Para cada área llena calcular su caja delimitadora bordes líneas rectangulares cuadro delimitador así que prueba su relación de aspecto si está cerca de cuadrado entonces esto no es borde línea también demasiado pequeña caja delimitadora no significa una línea de borde demasiado pequeño relleno de píxeles cuenta en comparación con el cuadro delimitador más grande El tamaño del lado y el área tampoco es una línea de borde. Puede hacerlo más robusto si regresa la línea para establecer píxeles de cada área y calcular la distancia media entre la línea de regresión y cada píxel establecido. Si el área demasiado alta no es la línea de borde. No vuelva a recortar las líneas de las líneas de las áreas a negro, así que substraiga la máscara de la imagen o rellene con negro de nuevo. A veces el paso 5 puede ensuciar el interior del documento. En ese caso usted no recolorar nada en lugar de recordar todas las líneas de regresión para las áreas de borde. Luego, después de todo el proceso se hace juntar todas las líneas que son paralelas y cercanas al mismo eje (línea infinita), que debe reducir a 4 grandes líneas que determinan el rectángulo del documento. Así que ahora llenar de negro todos los píxeles exteriores (por el enfoque geométrico) respondió 11 de diciembre a las 7:50 Para tales tareas que normalmente examinar con cuidado los datos de entrada y tratar de averiguar qué señales se puede utilizar. Pero desafortunadamente usted ha proporcionado solamente un ejemplo, que hace este acercamiento bastante inútil. Además, esta representación no es realmente cómoda para trabajar con - has hecho algún preprocesamiento, o esto es lo que obtienes como entrada En el primer caso, puedes obtener un mejor consejo si puedes mostrarnos la entrada real. A continuación, si su meta es la reducción de ruido y no la segmentación de documentos / fondo - que son realmente limitados en las opciones. Similar a lo que usted dijo, intentaría detectar los componentes conectados con intensidad 255 (en lugar de detectar contornos, que pueden ser menos robustos) y eliminar los que tienen un área pequeña. Eso puede fallar en ciertos casos. Además, en la imagen que ha proporcionado puede utilizar estadísticas locales para suprimir las zonas de ruido regular. Esto reducirá el desorden de fondo si selecciona el tamaño de barrio apropiadamente. Pero nuevamente, si está haciendo esto para la detección de documentos - puede haber enfoques más sólidos. Por ejemplo, si conoce el objeto de primer plano (ID de controladores), puede tratar de recopilar un conjunto de datos de imágenes de ID y calcular el histograma de color típico, lo que puede ser bastante característico. Después de eso, puede retroproyectar este histograma en la imagen de entrada y obtener una región áspera de interés, o incluso una máscara precisa. Entonces usted puede binarizarla e intentar detectar contornos. Puede probar diferentes espacios de color y tamaños de bin para ver cuál se ajusta mejor. Si tiene que trabajar en diferentes condiciones de iluminación, puede tratar de igualar el histograma o hacer algún otro preproceso para reducir la variación de color causada por la iluminación. Respondió Dec 12 15 at 11:24 Yo debería haber escrito más contexto en la pregunta, mi error. Como entrada, tengo una imagen RGB estándar con un documento (ID de licencia de conducir, por ejemplo) en algún fondo. La tarea principal es detectar los bordes del documento. Los siguientes pasos son bastante conocidos: escala de grises, desenfoque, binarización Sobel, probabilístico Hough, encontrar rectángulo o trapecio (si la forma de trapecio que se encuentra a continuación, vaya a la transformación perspectiva). En los fondos de contraste simple todo funciona bien. La razón por la que estoy preguntando acerca de la reducción de ruido es que tengo que trabajar con miles de fondos y algunos de ellos dan ruido no importa qué opciones se utilizan. Ndash Viacheslav Fateev Dec 13 15 at 14:29 El ruido causará líneas adicionales no importa cómo Hough está configurado y líneas adicionales pueden engañar a la lógica posterior y afectar seriamente el rendimiento. (Se implementa en java script, sin soporte OpenCV o GPU). Si me faltó smth y usted sabe que los enfoques más eficaces y robustos no se vean afectados por el fondo, por favor hágamelo saber. Ndash Viacheslav Fateev Dec 13 15 at 14:31 Respondiendo estrictamente a la pregunta de la imagen binaria (es decir, después de que el daño como se hizo): Lo que parece característico de los píxeles de borde en lugar de ruido es que forman (relativamente) cadenas largas y lisas . Hasta ahora no veo mejor manera que el rastreo de todas las cadenas de 8 píxeles conectados, por ejemplo, con un contorno de seguimiento del algoritmo, y detectar las secciones rectas, por ejemplo, por Douglas-Peucker simplificación. Como el ruido es sólo en el exterior de la tarjeta, el contorno de las gotas tendrá al menos una sección limpia. Mantenga las secciones que son lo suficientemente largas. Esto puede destruir las esquinas curvas, así y en realidad usted debe buscar los caminos lisos que son lo suficientemente largos. Desafortunadamente, no puedo aconsejar de ningún algoritmo específico para abordar eso. Probablemente debería basarse en el análisis gráfico combinado con la geometría (enumerar rutas largas en un gráfico y comprobar la curvatura local / global). Por lo que sé (después de leer miles de artículos relacionados), esto no se menciona en ninguna parte de la literatura. Respondido Dec 13 15 at 15: 11Mercado Transformaciones de imagen Aplica un umbral adaptativo a una matriz. Src 8211 Imagen de canal único de 8 bits de origen. Dst 8211 Imagen de destino del mismo tamaño y del mismo tipo que src. MaxValue 8211 Valor no nulo asignado a los píxeles para los que se cumple la condición. Vea los detalles a continuación. AdaptiveMethod 8211 Algoritmo de umbral adaptativo a utilizar, ADAPTIVETHRESHMEANC o ADAPTIVETHRESHGAUSSIANC. Vea los detalles a continuación. ThresholdType 8211 Tipo de Umbral que debe ser THRESHBINARY o THRESHBINARYINV. BlockSize 8211 Tamaño de un vecindario de píxeles que se utiliza para calcular un valor de umbral para el píxel: 3, 5, 7 y así sucesivamente. C 8211 Constante sustraída de la media o de la media ponderada (ver los detalles a continuación). Normalmente, es positivo pero también puede ser cero o negativo. La función transforma una imagen de escala de grises en una imagen binaria de acuerdo con las fórmulas: imagen de entrada del src 8211: sin signo de 8 bits, 16 bits sin signo (CV16UC.) O punto flotante de precisión simple. Dst 8211 salida de la imagen del mismo tamaño y profundidad como src. Código de conversión del espacio de color del código 8211 (ver la descripción a continuación). DstCn 8211 número de canales en la imagen de destino si el parámetro es 0, el número de canales se deriva automáticamente de src y código. La función convierte una imagen de entrada de un espacio de color a otro. En el caso de una transformación a-desde el espacio de color RGB, el orden de los canales debe especificarse explícitamente (RGB o BGR). Tenga en cuenta que el formato de color predeterminado en OpenCV es a menudo referido como RGB, pero en realidad es BGR (los bytes se invierten). Así que el primer byte en una imagen en color estándar (24 bits) será un componente azul de 8 bits, el segundo byte será verde y el tercer byte será rojo. El cuarto, quinto y sexto bytes sería entonces el segundo píxel (azul, luego verde, luego rojo), y así sucesivamente. Los rangos convencionales para los valores de canal R, G y B son: 0 a 255 para imágenes CV8U 0 a 65535 para imágenes CV16U 0 a 1 para imágenes CV32F En el caso de transformaciones lineales, la gama no importa. Pero en el caso de una transformación no lineal, una imagen RGB de entrada debería normalizarse al rango de valores adecuado para obtener los resultados correctos, por ejemplo, para la transformación RGB Luv. Por ejemplo, si tiene una imagen de punto flotante de 32 bits convertida directamente de una imagen de 8 bits sin escalar, tendrá el rango de valores 0..255 en lugar de 0..1 asumido por la función. Por lo tanto, antes de llamar a cvtColor. Primero debe escalar la imagen: Si utiliza cvtColor con imágenes de 8 bits, la conversión tendrá alguna información perdida. Para muchas aplicaciones, esto no se notará, pero se recomienda utilizar imágenes de 32 bits en aplicaciones que necesiten el rango completo de colores o que convierten una imagen antes de una operación y luego convertir de nuevo. Si la conversión agrega el canal alfa, su valor se ajustará al máximo del rango de canales correspondiente: 255 para CV8U. 65535 para CV16U. 1 para CV32F. La función puede realizar las siguientes transformaciones: RGB GRAY (CVBGR2GRAY, CVRGB2GRAY, CVGRAY2BGR, CVGRAY2RGB) Transformaciones en el espacio RGB como añadir / quitar el canal alfa, invirtiendo el orden del canal, conversión a / desde el color RGB de 16 bits (R5: G6: B5 o R5: G5: B5), así como la conversión a / desde la escala de grises usando: (no soportado actualmente) L, u, y v se dejan como están Las fórmulas anteriores para convertir RGB a / de varios espacios de color se han tomado de Múltiples fuentes en la web, principalmente del sitio Charles Poynton poynton / ColorFAQ. html Bayer RGB (CVBayerBG2BGR, CVBayerGB2BGR, CVBayerRG2BGR, CVBayerGR2BGR, CVBayerBG2RGB, CVBayerGB2RGB, CVBayerRG2RGB, CVBayerGR2RGB). El patrón Bayer es ampliamente utilizado en cámaras CCD y CMOS. Le permite obtener imágenes en color desde un solo plano donde se intercalan los píxeles R, G y B (sensores de un componente en particular): Los componentes RGB de salida de un píxel se interpolan desde 1, 2 o 4 vecinos del Pixel con el mismo color. Hay varias modificaciones del patrón anterior que se pueden lograr desplazando el patrón un píxel a la izquierda y / o un píxel hacia arriba. Las dos letras y en las constantes de conversión CVBayer 2BGR y CVBayer 2RGB indican el tipo de patrón particular. Estos son componentes de la segunda fila, segunda y tercera columnas, respectivamente. Por ejemplo, el patrón anterior tiene un tipo muy popular 8220BG8221. DistanceTransform Calcula la distancia al píxel cero más cercano para cada píxel de la imagen de origen. Src 8211 de 8 bits, de un solo canal (binario) fuente de imagen. Dst 8211 Salida de imagen con distancias calculadas. Es una imagen de un solo canal de punto flotante de 32 bits del mismo tamaño que src. DistanceType 8211 Tipo de distancia. Puede ser CVDISTL1, CVDISTL2. O CVDISTC. MaskSize 8211 Tamaño de la distancia transformar la máscara. Puede ser 3, 5 o CVDISTMASKPRECISE (la última opción sólo es compatible con la primera función). En el caso del tipo de distancia CVDISTL1 o CVDISTC, el parámetro se fuerza a 3 porque una máscara da el mismo resultado que una apertura mayor. Etiquetas 8211 Serie de etiquetas de salida opcional 2D (el diagrama de Voronoi discreto). Tiene el tipo CV32SC1 y el mismo tamaño que src. Vea los detalles a continuación. LabelType 8211 Tipo de la matriz de etiquetas a construir. Si labelTypeDISTLABELCCOMP, a continuación, cada componente conectado de ceros en src (así como todos los píxeles no cero más cercano al componente conectado) se le asignará la misma etiqueta. Si labelTypeDISTLABELPIXEL entonces cada píxel cero (y todos los píxeles no cero más cercanos a él) obtiene su propia etiqueta. Las funciones distanceTransform calculan la distancia aproximada o precisa desde cada píxel de la imagen binaria hasta el píxel cero más próximo. Para píxeles de imagen cero, la distancia obviamente será cero. Cuando maskSize CVDISTMASKPRECISE y distanceType CVDISTL2. La función ejecuta el algoritmo descrito en Felzenszwalb04. Este algoritmo está paralelizado con la biblioteca TBB. En otros casos, se utiliza el algoritmo Borgefors86. Esto significa que para un píxel, la función encuentra la ruta más corta al píxel cero más cercano, que consiste en desplazamientos básicos: horizontal, vertical, diagonal o knight8217s mover (lo último disponible para una máscara). La distancia total se calcula como una suma de estas distancias básicas. Dado que la función de distancia debe ser simétrica, todos los desplazamientos horizontal y vertical deben tener el mismo costo (indicado como a), todos los desplazamientos diagonales deben tener el mismo costo (indicado como b), y todos los movimientos del caballero deben tener el mismo costo (Denotado como c). Para los tipos CVDISTC y CVDISTL1, la distancia se calcula con precisión, mientras que para CVDISTL2 (distancia euclidiana) la distancia se puede calcular sólo con un error relativo (una máscara da resultados más precisos). Para a, b. y C . OpenCV utiliza los valores sugeridos en el documento original: Típicamente, para una estimación de distancia rápida y aproximada CVDISTL2. Se utiliza una máscara. Para una estimación de distancia más precisa CVDISTL2. Se utiliza una máscara o el algoritmo preciso. Obsérvese que tanto el algoritmo preciso como el aproximado son lineales en el número de píxeles. La segunda variante de la función no sólo calcula la distancia mínima para cada píxel, sino que también identifica el componente conectado más cercano que consiste en cero píxeles (labelTypeDISTLABELCCOMP) o el píxel cero más cercano (labelTypeDISTLABELPIXEL). El índice del componente / píxel se almacena en. Cuando labelTypeDISTLABELCCOMP. La función encuentra automáticamente componentes conectados de cero píxeles en la imagen de entrada y los marca con etiquetas distintas. Cuando labelTypeDISTLABELCCOMP. La función escanea a través de la imagen de entrada y marca todos los píxeles cero con etiquetas distintas. En este modo, la complejidad sigue siendo lineal. Es decir, la función proporciona una manera muy rápida de calcular el diagrama de Voronoi para una imagen binaria. En la actualidad, la segunda variante sólo puede utilizar el algoritmo de transformación de distancia aproximada, es decir, maskSizeCVDISTMASKPRECISE aún no está soportado. Un ejemplo sobre el uso de la transformada de distancia se puede encontrar en opencvsourcecode / samples / cpp / distrans. cpp (Python) Un ejemplo sobre el uso de la transformada de distancia se puede encontrar en opencvsource / samples / python2 / distrans. py floodFill Llena un componente conectado con el Dado el color. Image 8211 Imagen de entrada / salida de 1 ó 3 canales, 8 bits o de punto flotante. Se modifica por la función a menos que el indicador FLOODFILLMASKONLY se establezca en la segunda variante de la función. Vea los detalles a continuación. Mask 8211 Máscara de operación que debe ser una imagen de 8 bits de un solo canal, 2 píxeles más ancha y 2 píxeles más alta que la imagen. Dado que este es un parámetro de entrada y salida, debe asumir la responsabilidad de inicializarlo. El relleno de inundación no puede atravesar píxeles que no sean cero en la máscara de entrada. Por ejemplo, una salida de detector de borde puede utilizarse como máscara para detener el llenado en los bordes. En la salida, los píxeles en la máscara correspondiente a los píxeles rellenos en la imagen se establecen en 1 o en el valor especificado en banderas como se describe a continuación. Por lo tanto, es posible utilizar la misma máscara en múltiples llamadas a la función para asegurarse de que las áreas llenas no se superponen. SeedPoint 8211 Punto de partida. NewVal 8211 Nuevo valor de los píxeles del dominio repintado. LoDiff 8211 Diferencia de brillo / color más baja entre el píxel actualmente observado y uno de sus vecinos que pertenecen al componente, o un píxel de semilla que se añade al componente. UpDiff 8211 Diferencia máxima de brillo / color superior entre el píxel actualmente observado y uno de sus vecinos pertenecientes al componente, o un píxel de semilla que se añade al componente. Rect 8211 Parámetro de salida opcional establecido por la función en el rectángulo delimitador mínimo del dominio repintado. Banderas 8211Las banderas de la operación. Los primeros 8 bits contienen un valor de conectividad. El valor predeterminado de 4 significa que sólo se consideran los cuatro píxeles vecinos más cercanos (aquellos que comparten una arista). Un valor de conectividad de 8 significa que los ocho píxeles vecinos más cercanos (aquellos que comparten una esquina) serán considerados. Los siguientes 8 bits (8-16) contienen un valor entre 1 y 255 para llenar la máscara (el valor predeterminado es 1). Por ejemplo, 4 (255 ltlt 8) considerará a 4 vecinos más cercanos y rellenará la máscara con un valor de 255. Las siguientes opciones adicionales ocupan bits más altos y por lo tanto pueden combinarse más con los valores de conectividad y relleno de máscara usando bits o ): FLOODFILLFIXEDRANGE Si se establece, se considera la diferencia entre el píxel actual y el píxel de semilla. De lo contrario, se considera la diferencia entre los píxeles vecinos (es decir, el rango flotante). FLOODFILLMASKONLY Si se establece, la función no cambia la imagen (newVal se ignora) y sólo llena la máscara con el valor especificado en los bits 8-16 de flags como se describe anteriormente. Esta opción sólo tiene sentido en las variantes de función que tienen el parámetro de máscara. Las funciones floodFill rellenan un componente conectado a partir del punto de semilla con el color especificado. La conectividad está determinada por la proximidad de color / brillo de los píxeles vecinos. Se considera que el píxel pertenece al dominio repintado si: en el caso de una imagen en escala de grises y rango flotante en el caso de una imagen en color y rango fijo donde es el valor de uno de los vecinos de píxeles que ya se sabe que pertenece al componente. Es decir, para ser añadido al componente conectado, un color / brillo del píxel debe estar lo suficientemente cerca de: Color / brillo de uno de sus vecinos que ya pertenecen al componente conectado en caso de un rango flotante. Color / brillo del punto de semilla en caso de un rango fijo. Utilice estas funciones para marcar un componente conectado con el color especificado en el lugar, o construir una máscara y luego extraer el contorno, o copiar la región a otra imagen, y así sucesivamente. Un ejemplo usando la técnica FloodFill se puede encontrar en opencvsourcecode / samples / cpp / ffilldemo. cpp (Python) Un ejemplo usando la técnica FloodFill se puede encontrar en opencvsourcecode / samples / python2 / floodfill. cpp integral Calcula la integral de una imagen. Imagen 8211 Entrada de 8 bits de 3 canales de imagen. Marcadores 8211 Entrada / salida Imagen de un solo canal de 32 bits (mapa) de marcadores. Debe tener el mismo tamaño que la imagen. La función implementa una de las variantes del algoritmo de segmentación basado en marcadores no paramétricos, descrito en Meyer92. Antes de pasar la imagen a la función, tiene que bosquejar aproximadamente las regiones deseadas en los marcadores de imagen con índices positivos (gt0). Por lo tanto, cada región se representa como uno o más componentes conectados con los valores de píxel 1, 2, 3 y así sucesivamente. Dichos marcadores pueden ser recuperados de una máscara binaria usando findContours () y drawContours () (ver el demo watershed. cpp). Los marcadores son 8220seeds8221 de las regiones de imagen futuras. Todos los otros píxeles en los marcadores. Cuya relación con las regiones delimitadas no se conoce y debe ser definida por el algoritmo, debe establecerse en 08217s. En la salida de función, cada píxel de los marcadores se establece en un valor de los componentes 8220seed8221 o -1 en los límites entre las regiones. La demostración visual y el ejemplo de uso de la función se pueden encontrar en el directorio de muestras de OpenCV (ver la demo de watershed. cpp). Cualquier dos componentes conectados vecinos no están necesariamente separados por un límite de cuenca (por ejemplo, -18217s píxeles), pueden tocarse en la imagen de marcador inicial pasada a la función. Se puede encontrar un ejemplo usando el algoritmo de cuencas en opencvsourcecode / samples / cpp / watershed. cpp (Python) Se puede encontrar un ejemplo usando el algoritmo de cuencas en opencvsourcecode / samples / python2 / watershed. py grabCut Ejecuta el algoritmo GrabCut. Máscara de un solo canal de 8 bits de entrada / salida. La máscara es inicializada por la función cuando el modo está ajustado a GCINITWITHRECT. Sus elementos pueden tener uno de los valores siguientes: GCBGD define unos píxeles de fondo obvios. GCFGD define un píxel de primer plano obvio (objeto). GCPRBGD define un posible píxel de fondo. GCPRFGD define un posible píxel de primer plano. Rect 8211 ROI que contiene un objeto segmentado. Los píxeles que se encuentran fuera del ROI están marcados como 8220obvious background8221. El parámetro sólo se utiliza cuando modeGCINITWITHRECT. BgdModel 8211 Matriz temporal para el modelo de fondo. No lo modifique mientras está procesando la misma imagen. FgdModel 8211 Arrays temporales para el modelo de primer plano. No lo modifique mientras está procesando la misma imagen. IterCount 8211 Número de iteraciones que el algoritmo debe hacer antes de devolver el resultado. Tenga en cuenta que el resultado puede refinarse con otras llamadas con modeGCINITWITHMASK o modeGCEVAL. Modo 8211Todo de operación que podría ser uno de los siguientes: GCINITWITHRECT La función inicializa el estado y la máscara utilizando el rectángulo proporcionado. Después ejecuta iterCount iteraciones del algoritmo. GCINITWITHMASK La función inicializa el estado utilizando la máscara suministrada. Tenga en cuenta que GCINITWITHRECT y GCINITWITHMASK pueden combinarse. Entonces, todos los píxeles fuera del ROI se inicializan automáticamente con GCBGD. GCEVAL El valor significa que el algoritmo debe reanudarse. La función implementa el algoritmo de segmentación de imagen GrabCut. Vea la muestra grabcut. cpp para aprender a usar la función.

Comments

Popular Posts