• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Opencv ohne iSight

Ch-Macuser

Roter Delicious
Registriert
26.11.06
Beiträge
93
Hallo zusammen

Ich versuche hier gerade für ein Schulprojekt einen bestimmten Versuchsaufbau zu realisieren. Das Ziel ist, ein Bild von einer Kamera live zu erfassen und von da aus dann weitere Berechnungen damit anzustellen.

Soweit, so gut. Ich habe es geschafft, OpenCV zu kompilieren, über das Beispielprogramm kommt auch schon ein Bild von der integrierten iSight meines MBP. Es hapert allerdings, wenn es nun darum geht, eine angeschlossene Firewire Kamera als input zu erkennen.

Meine bisherigen Recherchen haben ergeben, dass es zwar eine Library gibt, die es ermöglicht, OpenCV mit mehreren Kameras zu betreiben (Was aufgrund der iSight ja zwingend notwendig ist, oder irre ich mich da?). Diese Library cvcam.h ist aber scheinbar unsupported:

http://old.nabble.com/cvcam.h-missing-td9397087.html schrieb:
The reason is that cvcam is unsupported for a long time now and has
never been ported to any platform despite Windows. It's simply not
available on Unix / Mac OS X. To process camera output, please look
into the HighGUI documentation.

DIe Highgui Dokumentation hilft mir aber nicht weiter, und in der Datei highgui_c.h selbst finde ich nur folgendes zum initialisieren:
Code:
enum
{
	CV_CAP_ANY      =0,     // autodetect

	CV_CAP_MIL      =100,   // MIL proprietary drivers

	CV_CAP_VFW      =200,   // platform native
	CV_CAP_V4L      =200,
	CV_CAP_V4L2     =200,

	CV_CAP_FIREWARE =300,   // IEEE 1394 drivers
	CV_CAP_FIREWIRE =300,
	CV_CAP_IEEE1394 =300,
	CV_CAP_DC1394   =300,
	CV_CAP_CMU1394  =300,

	CV_CAP_STEREO   =400,   // TYZX proprietary drivers
	CV_CAP_TYZX     =400,
	CV_TYZX_LEFT    =400,
	CV_TYZX_RIGHT   =401,
	CV_TYZX_COLOR   =402,
	CV_TYZX_Z       =403,

	CV_CAP_QT       =500,   // QuickTime

	CV_CAP_UNICAP   =600,   // Unicap drivers

	CV_CAP_DSHOW    =700,   // DirectShow (via videoInput)

	CV_CAP_PVAPI    =800   // PvAPI, Prosilica GigE SDK
};

/* start capturing frames from camera: index = camera_index + domain_offset (CV_CAP_*) */
CVAPI(CvCapture*) cvCreateCameraCapture( int index );

Die Treiber habe ich im Beispielprogramm alle schon durchprobiert, entweder gibt es einen Fehler, oder Im Falle von CV_CAP_QT wird die iSight initialisiert. Die Firewire Kamera wird aber definitiv erkannt, ich kann sie bspw. in Photobooth nutzen.

Meine Idee wäre jetzt gewesen, entweder Quicktime irgendwie mitzuteilen, dass die Firewirecam Standardmässig gewählt werden soll, oder dass ich die iSight via Software komplett deaktiviere. Die Tutorials im Netz, die ich dazu gefunden habe, funktionieren aber nicht. Wenn mir da jemand helfen könnte, wäre ich sehr froh.

Oder noch besser wäre es, wenn mir jemand sagen könnte, wie ich die Kamera in OpenCV direkt zum Arbeiten bewegen kann, wäre das natürlich noch besser.

Noch ein paar weitere Infos:
Kameramodell: Sony, DCR-PC104E
Code zum initialisieren der Kamera:
Code:
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY);
	if( !capture ) {
		fprintf( stderr, "ERROR: capture is NULL \n" );
		getchar();
		return -1;
	}

Gruss Johannes