2011-11-02 12 views
5

nie mogę używać kamery jako urządzenia wejściowego do OpenCV 2.3.1 w Ubuntu 11.04, ten kod działa poprawnie na oknach:OpenCV nie może odnaleźć urządzenia wideo

#include "cv.h" 
#include "highgui.h" 
#include <stdio.h> 

// A Simple Camera Capture Framework 
int main() { 

    CvCapture* capture = cvCaptureFromCAM(-1); 
    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 ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version), 
    //remove higher bits using AND operator 
    if((cvWaitKey(10) & 255) == 27) break; 
    } 

    // Release the capture device housekeeping 
    cvReleaseCapture(&capture); 
    cvDestroyWindow("mywindow"); 
    return 0; 
} 

Zwraca „ERROR: capture jest NULL”

+0

Moja kamera internetowa to/dev/video0 – Maysam

+0

Czy można przechwytywać ramki za pomocą innej aplikacji V4L (np. Camorama)? Tylko po to, aby upewnić się, że masz wszystkie wymagane wymagania, a kamera jest faktycznie obsługiwana. –

+0

Tak, mogę, Camorama działa dobrze – Maysam

Odpowiedz

4

Znalazłem rozwiązanie, muszę zainstalować libv4l-0 i libv4l-dev, a następnie skompilować OpenCV z USE_V4L=ON.

Powiązane problemy