Así que estoy tratando de dibujar el convexHull de un contorno en python, sin embargo, al imprimir la imagen no cambia.

roi=mask[y:y+h,x:x+w]
roi = cv2.fastNlMeansDenoisingColored(roi,None,15,15,7,21)
hull = cv2.convexHull(cnt)
cv2.drawContours(roi,[hull],0,(147,0,255),2)
cv2.imshow(str(i),roi)
blank_image[y:y+h,x:x+w] = roi

Sin embargo, las imágenes que muestran son exactamente el mismo si yo no incluir el código. Busqué en internet, pero parece no puede encontrar la respuesta.
Aquí se muestra un ejemplo de Imagen:Dibujo convexHull en openCV2 Python

  • Alguien sabe? Todavía no puede encontrar una solución.
  • puedes subir la imagen que está usted trabajando?
  • Es muchas imágenes, cada una de las imágenes se umbrales concretos a cabo. Estoy creando un programa de OCR de la plataforma, por lo que cada retorno de la inversión es de un carácter diferente.
  • Acabo de añadir una imagen de muestra. Que es lo que generalmente apariencia; sin embargo, el espacio en blanco alrededor del personaje se amplió un poco más.

1 Comentario

  1. 8

    He utilizado el siguiente código para obtener convex hull por la imagen dada por usted:

    import cv2
    import numpy as np
    
    img = cv2.imread('2.png')
    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret, thresh = cv2.threshold(img_gray, 127, 255, 0)
    contours,hierarchy = cv2.findContours(thresh,2,1)
    print len(contours)
    cnt = contours[0]
    
    hull = cv2.convexHull(cnt,returnPoints = False)
    defects = cv2.convexityDefects(cnt,hull)
    
    for i in range(defects.shape[0]):
        s,e,f,d = defects[i,0]
        start = tuple(cnt[s][0])
        end = tuple(cnt[e][0])
        far = tuple(cnt[f][0])
        cv2.line(img,start,end,[0,255,0],2)
        cv2.circle(img,far,5,[0,0,255],-1)
    
    cv2.imshow('img',img)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    Ya que los contornos se basan en la región en blanco en una imagen, yo era capaz de obtener dos tipos de contornos mediante la alteración de línea 5 en el código.

    CASO 1 :

    Yo era capaz de obtener esta: Dibujo convexHull en openCV2 Python

    CASO 2 :
    Ahora, cuando me cambio el quinto línea en el segmento de código, obtengo esto: Dibujo convexHull en openCV2 Python cuando yo invertir la imagen binaria ret, thresh = cv2.threshold(img_gray, 127, 255, 1)

    Esto es debido a que en caso 1 el contorno se encuentran sobre la base de esta imagen Dibujo convexHull en openCV2 Python

    Ahora en caso 2 el contorno se encuentran sobre la base de esta imagen Dibujo convexHull en openCV2 Python

    Como se puede ver, los contornos se encuentran basados en la blanco región en la imagen binaria.

    Espero que esto ayude.

    He utilizado EN ESTE ENLACE para obtener el código y por referencia.

    • Me alegro de que podría ayudar. Solo hay que tener en cuenta que, como he dicho antes, de la línea número 5 puede hacer la diferencia en cuanto a lo de contorno usted está mirando hacia fuera para.

Dejar respuesta

Please enter your comment!
Please enter your name here