OpenCV+Firewire



  • Hi Leute,
    hab folgendes Programm erstellt:

    #include <cv.h>
    #include <cxcore.h>
    #include <highgui.h>
    #include <windows.h>
    #include <conio.h>

    int mainLoop()
    {
    // Variablen definieren
    int waitKeyReturnValue = 0;
    int iHelp = 0;
    int iBigWidth = 1272;//Breite großes Fenster
    int iBigHeight = 765;//Höhe großes Fenster
    int iSmall= 300;//Größe kleines Fenster
    //Koordinaten kleines Fenster
    int iX=971;
    int iY=465;
    IplImage image;
    IplImage image1;
    CvCapture
    capture = NULL;
    CvCapture
    capture1 = NULL;

    // Kamerasignale holen
    capture = cvCaptureFromCAM(1);
    capture1 = cvCaptureFromCAM(2);

    if( !capture || !capture1)
    {
    fprintf(stderr,"Fehler-> Keine Kamerasignale...\n");
    getch();
    return -1;
    }
    //Kamerasignale holen und Signalkontrolle
    image = cvQueryFrame( capture );
    image1 = cvQueryFrame( capture1);

    if( !image || !image1)
    {
    fprintf(stderr,"Fehler-> Keine Frames verfügbar...\n");
    getch();
    return -1;
    }

    // Erstellung der Ausgabefenster
    cvNamedWindow("Kamera1", 0);
    cvMoveWindow("Kamera1", 0, 0);
    cvResizeWindow("Kamera1", iBigWidth, iBigHeight);
    cvNamedWindow("Kamera2", 0);
    cvResizeWindow("Kamera2", iSmall, iSmall);
    cvMoveWindow("Kamera2", iX, iY);

    do
    {
    // Erstes Frame von den Kameras holen
    image = cvQueryFrame(capture);
    image1 = cvQueryFrame(capture1);
    cvShowImage("Kamera1", image);
    cvShowImage("Kamera2", image1);
    if (iHelp!=1)//Fallunterscheidung von welcher Darstellung gewechselt wird
    {
    if (cvWaitKey(1)==115)//Wechselbedingung
    {
    cvResizeWindow("Kamera2", iBigWidth, iBigHeight);
    cvMoveWindow("Kamera2", 0, 0);
    cvResizeWindow("Kamera1", iSmall, iSmall);
    cvMoveWindow("Kamera1", iX, iY);
    cvShowImage("Kamera2", image1);
    cvShowImage("Kamera1", image);
    iHelp=1;
    }
    }
    else
    {
    if (cvWaitKey(1)==115)//Wechselbedingung
    {
    cvResizeWindow("Kamera2", iSmall, iSmall);
    cvMoveWindow("Kamera2", iX, iY);
    cvMoveWindow("Kamera1", 0, 0);
    cvResizeWindow("Kamera1", iBigWidth, iBigHeight);
    cvShowImage("Kamera1", image);
    cvShowImage("Kamera2", image1);
    iHelp=0;
    }
    }
    waitKeyReturnValue = cvWaitKey(1);
    }while (waitKeyReturnValue != 27);// Programmende mit ESC- Tast

    // Löschen der Fenster und der Signale
    cvReleaseCapture(&capture);
    cvReleaseCapture(&capture1);
    cvDestroyAllWindows();
    return 0;
    }

    int main(int argc, char** argv)
    {
    return mainLoop();
    }
    Soll die Bilder von zwei Stereofirewire- Kameras holen und in zwei getrennten Fenstern ausgeben. Habs mit zwei Webcams ausprobiert und es läuft.
    Aber leider funktioniert es nicht mit den Stereokameras(Typ: Bumblebee2).
    Es wird mir immer angezeigt, dass er keine Kamerasignale bekommt. Die Firewirecams funktionieren aber(hab ich getestet). Jemand ne Idee warum es mit den Webcams geht, aber nicht mit den Firewirecams? 😕


Anmelden zum Antworten