2012-05-03 3 views
0

Je souhaite utiliser un appareil photo et effectuer un traitement d'image sur le flux d'entrée, mais lorsque le programme est exécuté, une fenêtre apparaît demandant 'Capture Source' après quoi 'OK' ou 'Apply' ne se passe rien. Mais si j'utilise un fichier vidéo au lieu d'un appareil photo, le programme fonctionne parfaitement bien.OpenCV 2.2 N'ouvre pas Camera

Voici le code:

int MainWindow::on_CameraOpen_triggered() 
{ 
// programming done in Qt and using Opencv 2.2. 
// all the variables are defined & declared in private of header file 
// there is no compilation error 
// return type of the function is 'int' 
// Following program works fine if name of video file is mentioned 
// instead of '0' is the line below 
VideoCapture capture(0); 

if(!capture.isOpened()) 
    return 1; 

    bool stop(false); 
    double rate = capture.get(CV_CAP_PROP_FPS); 
    namedWindow("Extracted Frame"); 
    int delayVideo = 1000/rate; 

    while(!stop) 
    { 
     if(!capture.read(frame)) 
     { 
      break; 
     } 
     imshow("Extracted frame", frame); 
     if(waitKey(delayVideo)>=0) 
     { 
      stop = true; 
     } 
    } 

capture.release(); 
} 

J'ai essayé de supprimer le bug qui a été corrigé au lien suivant: https://code.ros.org/trac/opencv/changeset/4400

https://code.ros.org/trac/opencv/browser/trunk/opencv/modules/highgui/src/precomp.hpp?rev=4400

caméra fonctionne très bien sur Gtalk et d'autres logiciels de la caméra .

Veuillez suggérer/guider ce qui peut être fait.

Merci beaucoup.

Cordialement, dbs

Répondre

0

Essayez ce code:

# include <opencv2/highgui/highgui.hpp> 

CvCapture *_capture; 


_capture = cvCaptureFromCAM(-1); 
//_capture = cvCaptureFromFile("test1.mp4"); 
if (!_capture) 
{ 
    //"Unable capture video" 
    return 1; 
} 

double rate = cvGetCaptureProperty(_capture, CV_CAP_PROP_FPS); 

//... 

cv::Mat = cvQueryFrame(_capture); 

//... 
+0

Bonjour, pourriez-vous expliquer/clarifier ce qui devrait être dans la partie '// ...' du code que vous avez mentionné? à mon code en poste. Je n'ai jamais utilisé de versions d'opencv avant 2.2 – DBS

0

Voici un autre exemple minimal que vous pouvez utiliser pour examiner si tout fonctionne correctement avec OpenCV:

#include <opencv2/opencv.hpp> 
#include <opencv2/highgui/highgui.hpp> 

int main() { 
    cv::VideoCapture cam = cv::VideoCapture(0); 
    cv::Mat frame; 
    cv::namedWindow ("Demo", CV_WINDOW_AUTOSIZE); 

    while (1) { 
     cam >> frame; 
     imshow ("Demo", frame); 
    } 

    cam.release(); 
    return 0; 
} 

Essayez à voir si le problème réside avec OpenCV ou votre programme Qt.

Questions connexes