Python opencv imwrite … no puedo encontrar params

Estoy usando opencv con python. Quería hacer un cv2.imwrte:

cv2.imwrite('myimage.png', my_im) 

El único problema es que opencv no reconoce las constantes params:

 cv2.imwrite('myimage.png', my_im, cv2.CV_IMWRITE_PNG_COMPRESSION, 0) 

No puede encontrar CV_IMWRITE_PNG_COMPRESSION en absoluto. ¿Algunas ideas?

No puedo encontrar la clave CV_XXXXX en el módulo cv2 :

  1. Prueba cv2.XXXXX
  2. Si cv2.cv.CV_XXXXX , use cv2.cv.CV_XXXXX

En su caso, cv2.cv.CV_IMWRITE_PNG_COMPRESSION .


Más información.

Los documentos para OpenCV (interfaz cv2) son un poco confusos.

Por lo general, los parámetros que parecen CV_XXXX son en realidad cv2.XXXX .

Uso lo siguiente para buscar el nombre de la constante cv2 relevante. Digamos que estaba buscando CV_MORPH_DILATE . MORPH cualquier constante con MORPH en ella:

 import cv2 nms = dir(cv2) # list of everything in the cv2 module [m for m in nms if 'MORPH' in m] # ['MORPH_BLACKHAT', 'MORPH_CLOSE', 'MORPH_CROSS', 'MORPH_DILATE', # 'MORPH_ELLIPSE', 'MORPH_ERODE', 'MORPH_GRADIENT', 'MORPH_OPEN', # 'MORPH_RECT', 'MORPH_TOPHAT'] 

De esto veo que MORPH_DILATE es lo que estoy buscando.

Sin embargo , a veces las constantes aún no se han movido de la interfaz cv a la interfaz cv2 .

En ese caso, puedes encontrarlos en cv2.cv.CV_XXXX .

Entonces, busqué IMWRITE_PNG_COMPRESSION por ti y no pude encontrarlo (bajo cv2.... ), y entonces busqué bajo cv2.cv.CV_IMWRITE_PNG_COMPRESSION , ¡y cv2.cv.CV_IMWRITE_PNG_COMPRESSION ! Está allá:

 >>> cv2.cv.CV_IMWRITE_PNG_COMPRESSION 16 

Expandiendo math.coffee para ignorar el caso y buscar en ambos espacios de nombres:

 import cv2 import cv2.cv as cv nms = [(n.lower(), n) for n in dir(cv)] # list of everything in the cv module nms2 = [(n.lower(), n) for n in dir(cv2)] # list of everything in the cv2 module search = 'imwrite' print "in cv2\n ",[m[1] for m in nms2 if m[0].find(search.lower())>-1] print "in cv\n ",[m[1] for m in nms if m[0].find(search.lower())>-1] >>> in cv2 ['imwrite'] in cv ['CV_IMWRITE_JPEG_QUALITY', 'CV_IMWRITE_PNG_COMPRESSION', 'CV_IMWRITE_PXM_BINARY'] >>> 

Esperemos que este problema desaparezca en algún lanzamiento posterior de cv2 …

El estilo de compresión se elige automáticamente de la extensión de archivo. Vea la ayuda cv2.imwrite aquí .

sin embargo, es posible que aún le interese saber todos los posibles indicadores utilizados por todas las funciones posibles en los módulos cv2 y cv.

busque cv2.txt y cv.txt en su computadora. serán donde se instalen los módulos opencv. en la parte inferior de esos archivos de texto hay una lista de las banderas utilizadas por los respectivos módulos.

En caso de que no los encuentres, puedes descargar los que tengo desde aquí, aunque son de agosto de 2011:

  • cv2.txt
  • cv.txt

de hecho, con la API de estilo cv2, esta constante se reemplaza con cv2.IMWRITE_PNG_COMPRESSION .