Python opencv imwrite … findet keine params

Ich benutze opencv mit python Ich wollte eine cv2.imwrte machen:

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

Das einzige Problem ist, dass opencv die params Konstanten nicht erkennt:

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

Es kann überhaupt keine CV_IMWRITE_PNG_COMPRESSION finden. Irgendwelche Ideen?

  • SQLite 3: sqlite InterfaceError: Fehlerbindungsparameter 0 - wahrscheinlich nicht unterstützter Typ
  • Selen kann keine Option Formularelement von xpath finden
  • Kennt jemand über Workflow Frameworks / Bibliotheken in Python?
  • Django - Süd - Gibt es eine Möglichkeit, das SQL zu sehen, das es läuft?
  • Python geht zurück zu einer anderen Codezeile
  • Mit Reverse () in Django-Formen
  • Wie kann ich conda benutzen, um pydot zu installieren?
  • Fehler beim Pelican-Quickstart "Kein Modul namens html_parser"
  • 4 Solutions collect form web for “Python opencv imwrite … findet keine params”

    Ich kann den Schlüssel CV_XXXXX im cv2 Modul nicht finden:

    1. Versuche cv2.XXXXX
    2. Failing that, verwenden Sie cv2.cv.CV_XXXXX

    In Ihrem Fall, cv2.cv.CV_IMWRITE_PNG_COMPRESSION .


    Mehr Info.

    Die docs für OpenCV (cv2 interface) sind etwas verwirrend.

    Normalerweise sind die Parameter, die wie CV_XXXX aussehen, eigentlich cv2.XXXX .

    Ich benutze folgendes, um nach dem entsprechenden cv2 Konstantennamen zu suchen. Sag, ich habe nach CV_MORPH_DILATE . Ich suche irgendeine Konstante mit MORPH darin:

     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'] 

    Davon sehe ich, dass MORPH_DILATE was ich suche.

    Allerdings sind die Konstanten manchmal nicht von der cv Schnittstelle zur cv2 Schnittstelle cv2 worden.

    In diesem Fall können Sie sie unter cv2.cv.CV_XXXX .

    Also, ich habe für IMWRITE_PNG_COMPRESSION für dich IMWRITE_PNG_COMPRESSION und konnte es nicht finden (unter cv2.... ), und so sah ich unter cv2.cv.CV_IMWRITE_PNG_COMPRESSION und hey presto! Es ist da:

     >>> cv2.cv.CV_IMWRITE_PNG_COMPRESSION 16 

    Erweitern auf mathematical.coffee, um den Fall zu ignorieren und in beiden Namespaces zu schauen:

     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'] >>> 

    Hoffentlich wird dieses Problem in einigen späteren Release von cv2 …

    Der Komprimierungsstil wird automatisch aus der Dateierweiterung ausgewählt. Sehe die cv2.imwrite Hilfe hier .

    Aber vielleicht interessieren Sie sich noch, alle möglichen Flaggen zu kennen, die von allen möglichen Funktionen in cv2- und cv-Modulen verwendet werden.

    Suche nach cv2.txt und cv.txt auf deinem Computer. Sie werden dort sein, wo die opencv-Module installiert sind. Am unteren Rand dieser Textdateien sind eine Liste der Flags, die von den jeweiligen Modulen verwendet werden.

    Nur für den Fall, dass du sie nicht findest, kannst du die von mir herunter laden, obwohl sie ab august 2011 sind:

    • Cv2.txt
    • Cv.txt

    In der Tat, mit cv2 Stil API, wird diese Konstante durch cv2.IMWRITE_PNG_COMPRESSION .

    Python ist die beste Programmiersprache der Welt.