Ich habe ein kleines Problem mit OpenCV:
Ich versuche aus einem Videostream von meiner Webcam Bilder zu speichern, jedoch geht es nicht.
Mit der Funktion cvSaveImage(filename, file) müsste es aber eigentlich gehen.
Ich habe überall geschaut, aber nichts gefunden.
Im Folgenden findet ihr den Code:
Code: Alles auswählen
# Fenster erzeugen
highgui.cvNamedWindow('Camera', highgui.CV_WINDOW_AUTOSIZE)
# Fenster an linke obere Ecke platzieren
highgui.cvMoveWindow('Camera', 0, 0)
# Kamera initialisieren
self.capture = highgui.cvCreateCameraCapture(-1)
# Framegroesse festlegen
highgui.cvSetCaptureProperty(self.capture, highgui.CV_CAP_PROP_FRAME_WIDTH, 320)
highgui.cvSetCaptureProperty(self.capture, highgui.CV_CAP_PROP_FRAME_HEIGHT, 240)
# Kontrolle, ob Kamera bereit ist
if not self.capture:
print "Fehler: Kann Kamera nicht auslesen!"
sys.exit (1)
# 1.Frame aufnehmen
self.frame = highgui.cvQueryFrame(self.capture)
# Vom 1.Frame Groesse rauslesen
self.frame_size = cv.cvGetSize(self.frame)
# Erstellt das Bild mit der entsprechenden Groesse
cv.cvCreateImage(self.frame_size, 8, 3)
# Endlosschleife
while 1:
# Aktuelles Bild abgreifen
self.frame = highgui.cvQueryFrame (self.capture)
if self.frame is None:
# Beenden, wenn kein Bild abgegriffen wird
break
# Event-Handler
k = highgui.cvWaitKey (10)
# Bild wird angezeigt
highgui.cvShowImage('Camera', self.frame)
# Bei Druck auf ESC wird Programm beendet und Speicher wieder freigegeben
if k == '\x1b':
break
cv.cvReleaseMemStorage(self.capture)
1) Wo muss ich die Speichern-Funktion einfügen? Ich habe zusätzlich eine Methode "def save" geschrieben, jedoch weiss ich nicht, wo ich sie platzieren soll.
2) Ich hatte es mal ursprünglich in der drittletzten Zeile vor "break" positioniert. Beim Druck auf ESC müsste ja zuerst das aktuelle Frame gespeichert und anschließend das Programm beendet werden.
Vor "break" zu positionieren geht anscheinend, aber das Programm reagiert nicht mehr und speichert nichts.
Ich wäre sehr, sehr froh, wenn ihr mir hierbei helfen würdet!!!
MFG,
OpenCV