opencv speichern von Bild aufgenommen von der webcam
paar Tagen bin ich die it-Ausgaben,
ich receeive ein Fehler sigabrt Fehler bei codes tryng zu speichern Sie das Bild auf die hd, somewone hat die Lösungen, oder ein paar Ideen?
arbeite mit einem macbook pro, mountain lion auf der letzten XCODE und die Bibliotheken sind wll konfiguriert.
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
using namespace cv;
//A Simple Camera Capture Framework
int main() {
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
if ( !capture ) {
fprintf( stderr, "ERROR: capture is NULL \n" );
getchar();
return -1;
}
//Create a window in which the captured images will be presented
cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );
//Show the image captured from the camera in the window and repeat
while ( 1 ) {
//Get one frame
IplImage* frame = cvQueryFrame( capture );
if ( !frame ) {
fprintf( stderr, "ERROR: frame is null...\n" );
getchar();
break;
}
cvShowImage( "mywindow", frame );
//Do not release the frame!
if ( (cvWaitKey(10) & 255) == 's' ) {
CvSize size = cvGetSize(frame);
IplImage* img= cvCreateImage(size, IPL_DEPTH_16S, 1);
img = frame;
cvSaveImage("matteo.jpg",&img);
}
if ( (cvWaitKey(10) & 255) == 27 ) break;
}
//Release the capture device housekeeping
cvReleaseCapture( &capture );
cvDestroyWindow( "mywindow" );
return 0;
}
Ihre
IplImage* img= cvCreateImage(size, IPL_DEPTH_16S, 1);
ist sinnlos, da Sie überschreiben Sie den Mauszeiger auf Ihren neuen IplImage
auf die nächste Zeile.InformationsquelleAutor Matteo Ottaviani | 2013-06-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass das mischen Sie Ihre Zeiger-syntax. Sie erstellen eine neue
IplImage
mitIplImage* img= cvCreateImage(size, IPL_DEPTH_16S, 1);
aber in der folgenden Zeile, verlieren Sie diese Struktur als überschreiben Sie den Zeigerimg
mitframe
.Den code Ursache Ihrer sigabrt ist, wo Sie senden ein Zeiger auf einen Zeiger in
cvSaveImage("matteo.jpg",&img);
. Sollten Sie es nicht tun&img
alsimg
ist bereits ein Zeiger. Das folgende ist richtig:Gibt es eigentlich keinen Grund für Sie zu erstellen Sie eine neue
IplImage
es sei denn, Sie möchten etwas tun Vorverarbeitung, bevor Sie es speichern in eine Datei.Ich geändert
if
-Klausel das folgende, das funktioniert gut auf meinem computer:InformationsquelleAutor PureW
Habe ich verbrachte mehrere Tage auf der Suche im internet nach der Lösung, mit einfachen Tastatur-Eingaben. Es war immer einige Bein /Verzögerung, während mittels cv::waitKey.
Die Lösung, die ich gefunden habe, ist mit dem hinzufügen von Sleep(5) direkt nach der Aufnahme das Bild aus der webcam.
Im unten stehenden Beispiel ist eine Kombination von verschiedenen Forums-threads.
Funktioniert es ohne Bein /Verzögerung. Windows OS.
Drücken Sie "q" zu erfassen und speichern Sie die Rahmen.
Gibt es eine webcam-feed immer vorhanden. Sie können die Reihenfolge ändern, zeigen die erfassten frame /Bild.
Grüße, Andrej
Grüße,
Habe ich verbrachte mehrere Tage auf der Suche im internet nach der Lösung, mit einfachen Tastatur-Eingaben. Es war immer einige Bein /Verzögerung, während mittels cv::waitKey.
Die Lösung, die ich gefunden habe, ist mit dem hinzufügen von Sleep(5) direkt nach der Aufnahme das Bild aus der webcam.
Im unten stehenden Beispiel ist eine Kombination von verschiedenen Forums-threads.
Funktioniert es ohne Bein /Verzögerung. Windows OS.
Drücken Sie "q" zu erfassen und speichern Sie die Rahmen.
Gibt es eine webcam-feed immer vorhanden. Sie können die Reihenfolge ändern, zeigen die erfassten frame /Bild.
PS "tipka" - bedeutet "Schlüssel" auf der Tastatur.
Grüße, Andrej
InformationsquelleAutor Andrej