2012-05-16 2 views
0

Qpl에서 IplImage를 QImages로 변환하는 루틴을 만났습니다. 시도해 보았습니다. 그리고 Iplframes를 사용하여 레이블에 비디오를 표시하려고 시도한 후에도 완벽하게 작동했습니다. 지금은 아무것도, OpenCV의 2.3을 표시 나던 때문에 문제의 일종으로 실행 웹캠과 메신저에서 라이브 비디오를 표시하려고 메신저, 우분투 리눅스 C++는이Qt 레이블에 IplImages 표시

CvCapture* capture = cvCreateFileCapture(argv[1]); 
//CvCapture* capture = cvCaptureFromCAM(0); 
while(1) { 

    frame = cvQueryFrame(capture); 
    cvWaitKey(33); 
    if(!frame) break;   
    cvCvtColor(frame,frame,CV_BGR2RGB); 
    myImage = QImage((unsigned char *)frame->imageDataOrigin,frame->width,frame->height,QImage::Format_RGB888); 
    myLabel.setPixmap(QPixmap::fromImage(myImage)); 
    myLabel.show(); 
    //sleep(1); 
    Sleeper::msleep(33); 
} 

가 나는에서이 옵션 capturefromcam 또는 capturefromavi을 가지고 avi 동영상을 변환하고 변환 된 프레임을 완벽하게 표시하지만, 웹캠의 캡쳐 된 프레임에 대해 똑같은 작업을 시도하면 아무 것도 표시되지 않으며, 어떤 오류가 발생하거나 어떤 생각이 들지 않습니까?

+0

을 출력 웹캠 데이터를 사용 할 수 imshow를? –

+0

isNull()을 사용하여 이미지가 유효한지 확인할 수 있습니까? – Kunal

+0

Im은 IplImage에서 QImage 로의 컨버전레이션에 문제가 있다고 생각합니다. Im은 문제가 무엇인지 찾으려고 시도합니다. – user977480

답변

0

외관상으로는 cvCaptureFromCAM()0 색인에 기기를 찾지 못했습니다.

CvCapture* capture = cvCaptureFromCAM(0); 
if (!capture) 
{ 
    // print error 
    // quit application 
} 

다른 인덱스 CV_CAP_ANY 또는 실험을 통과 해보십시오 :이 장치에 액세스하는 데 실패 할 때 cvCaptureFromCAM() 반환 NULL을 :하지만 당신은 당신이 방어 코딩하지 않기 때문에이 모르는 1, 2, 3을하고,없는 경우는 그들의 작품은 compatibility list을 확인하고 카메라가 OpenCV에서 지원되는지 확인하는 것이 좋습니다.

같은 관심 cvQueryFrame()로, 유료해야합니다

frame = cvQueryFrame(capture); 
if (!frame) 
{ 
    // print error 
    // quit application 
} 
관련 문제