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
:
cv2.XXXXX
cv2.cv.CV_XXXXX
, use cv2.cv.CV_XXXXX
En su caso, cv2.cv.CV_IMWRITE_PNG_COMPRESSION
.
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:
de hecho, con la API de estilo cv2, esta constante se reemplaza con cv2.IMWRITE_PNG_COMPRESSION
.