2012-05-03 3 views
0

카메라를 사용하여 입력 스트림에서 이미지 처리를 수행하고 싶습니다. 그러나 프로그램이 실행될 때 '캡처 소스'를 묻는 창이 나타나면 '확인'또는 '적용'을하지 않으면 아무 일도 발생하지 않습니다.OpenCV 2.2 카메라가 열리지 않습니다

그러나 카메라 대신 비디오 파일을 사용하면 프로그램이 정상적으로 실행됩니다.

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

카메라 https://code.ros.org/trac/opencv/changeset/4400

이 GTALK 및 기타 카메라 소프트웨어에서 잘 작동 : 나는 다음 링크에서 정류 된 버그를 제거하기 위해 노력했다

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(); 
} 

: 여기

코드입니다 .

할 수있는 일을 친절히 제안/안내합니다.

대단히 감사합니다.

감사합니다, DBS

답변

0

이 코드를보십시오 : 여기

# 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

안녕하세요. 설명해 주실 수 있습니다./witr.windows.v를 언급 한 코드의 '// ...'부분에 무엇이 있어야하는지 명확하게 설명해주십시오. 게시물에서 내 코드에. 나는 2.2 이전에 opencv의 어떤 버전도 사용한 적이 없다. – DBS

0

당신이 모든 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; 
} 

가 그것을 시도를 OpenCV 또는 Qt 프로그램에 문제가 있는지 확인하십시오.

관련 문제