2017-02-14 16 views
2

私はyuvカメラを持っています。メモリ位置エラーでcv ::例外が発生しました

私は(あるためOpenCVの使用BGRの)BGRにYUVに変換するが、私は例外を取得します。Microsoft C++の例外:test1.exeで0x76c1a832で

未処理の例外メモリ位置0x00baee60でCV :: Exceptionを。 。

どうすれば修正できますか?

#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

コードは正しいようですが、イメージがキャプチャデバイスから実際に取得されたかどうかはチェックしていません。あなたのコードで最も問題となるのは、イメージを取得していないことです。変換しようとしている空のMatです(これは不可能です)。これによりエラーが発生します。

しかし、既にC++を使用している場合は、C++ APIを使用してください。

+0

ありがとうございます。私はC + + APIを使用した後、エラーが消えます。 –

+0

私はすでにあなたに投票しました。質問者の投票は表示されません(stackoverflowが私に気付きました) –

関連する問題