2017-02-14 2 views
2

yuv 카메라가 있습니다.메모리 위치 오류시 cv :: 예외 발생

나는 (때문에 OpenCV의 사용 BGR의) BGR에 YUV로 변환하지만 예외가 얻을 : 메모리 위치 0x00baee60에 이력서 :: 예외 : test1.exe에 0x76c1a832에서

처리되지 않은 예외 : ++ 예외를 마이크로 소프트 C.

어떻게 해결할 수 있습니까?

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

void main() 
{ 
    IplImage* image ; 
    CvCapture* capture=cvCaptureFromCAM(CV_CAP_ANY); 

    //cv::Mat input; 
    cv::Mat output; 

    cvNamedWindow("webcam",1); 

    cvGrabFrame(capture); 

    image = cvRetrieveFrame(capture); 

    cv::Mat input = cv::cvarrToMat(image); 

    cv::cvtColor(input,output,CV_YUV2BGR_YUY2); 

    imshow("webcam", output); 


    /* 
    while(1) 
    { 
     //get image from Camera 
     image = cvQueryFrame(capture); 

     //Iplimage to Mat 
     cv::Mat input = cv::cvarrToMat(image); 

     //YUV to RGB, CV_YUV2RGB_NV12 CV_YUV2BGR_NV12 CV_YUV2RGB_YV12 CV_YUV2BGR_YV12 CV_YUV2RGB_IYUV CV_YUV2BGR_IYUV CV_YUV2RGB_UYVY CV_YUV2BGR_UYVY 
     cv::cvtColor(input,output,CV_YUV2BGR_YUY2); 

     // Draw image 
     //cvShowImage("webcam", image); 
     imshow("webcam", output); 


     //key = cvWaitKey(30); 
     if(cvWaitKey(33)>=27) 
      break; 
    } 
    */ 

    cvReleaseCapture(&capture); 
    cvDestroyWindow("webcam"); 
} 
+2

C++ API를 사용하면 해당 코드는 http://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html#videocapture – ZdaR

+0

에서 볼 수 있습니다. (1) 사용 C++ 인터페이스. (2)'try-catch' 블록을 사용하여 예외를 잡아서 문제가 무엇인지 확인하십시오. '.what()'메소드를 가지고있다. –

+0

감사합니다. C++ API를 사용하면 오류가 사라집니다. –

답변

1

코드는 정확하지만 이미지가 캡처 장치에서 실제로 검색되었는지는 확인하지 않은 것입니다. 코드에서 가장 많이 드러나는 문제는 이미지를 검색하지 않고 변환하려고하는 빈 매트 (불가능 함)이며 이로 인해 오류가 발생합니다.

그러나 C++을 이미 사용하고 있다면 C++ API를 사용하지 않으시겠습니까?

+0

감사합니다. C++ API를 사용하면 오류가 사라집니다. –

+0

나는 이미 당신을 투표하셨습니다. 그러나 질문자의 투표가 표시되지 않습니다 (stackoverflow 나를 알았습니다) –