Ich habe ein Setup in Python, wo ich die OpenCV-Bibliothek verwende, um die Frames eines Videos als 2D-Arrays zu lesen - diese Videos sind Graustufen, also verwende ich vorzeichenlose 8-Bit-Integer für die Pixelwerte.
In meinem nächsten Schritt versuche ich pyplot.imshow()
von matplotlib zu verwenden, um den Frame des Videos anzuzeigen. Leider bekomme ich etwas, das überhaupt keinen Sinn ergibt.
Hier ist der Code zum Lesen des Videos:
%Vor% cv2numpy
ist eine Hilfsfunktion, die das OpenCV-Array in ein numpliges Array konvertiert (nur ein Aufruf von fromstring
und dann von reshape
). Hier ist der Code, mit dem ich den ersten Frame des Videos plotte:
In einem anderen Code habe ich die OpenCV SaveImage
in einem einzelnen Frame verwendet, um eine Referenz für das zu liefern, was ich von imshow
erwarten würde. Hier ist das Bild, das ich von der ehemaligen erhalten habe, und Hier ist das Bild, das ich aus dem obigen Code erhalte .
Wie Sie sehen können, sind sie sehr unterschiedlich. Das einzige, was ich aus dem tatsächlichen Bild herauslesen kann, ist das Striping: Es sieht fast so aus, als würde es die Dimensionen falsch bekommen, es sind mehr Pixel in der Breite als in der Höhe (dieses Bild soll 128 x 256 sein). Aber ich habe versucht, das Array vor dem Zeichnen zu transponieren, indem ich die Parameter extent
und aspect
und shape
entsprechend der Imshow-Dokumentation , und mit Ausnahme von einigen bizarren Pixel-Stretching habe ich keine Lösung gefunden.
Irgendwelche Gedanken?
BEARBEITEN 1: Ich denke, es wäre ratsam, den cv2numpy
-Code hinzuzufügen, falls das Umformen die Dinge irgendwie verwirren sollte (da mein "Wahrheitsbild" oben diesen Code nicht verwendet und daher auch nicht cv2numpy
ist nur in der fraglichen Pipeline involviert.)
Ich glaube, dass das Problem mit Ihrer cv2numpy-Funktion ist. Versuchen Sie Folgendes:
%Vor%Es hat den Trick für mich getan. Wenn Sie keine Graustufeneingabe verwenden (ich weiß, dass Sie angegeben haben, dass Sie jetzt Graustufen verwenden), müssen Sie mit cv.CreateImage und cv.CvtColor konvertieren.
Tags und Links python opencv computer-vision matplotlib