3

opencv を使用してウェブカメラからビデオをキャプチャしようとすると、このエラーが発生します。これは私が使用しているコードです:

#include "opencv2/opencv.hpp"

using namespace cv;
using namespace std;

int main( int argc, const char** argv ) {
    CvCapture *capture = cvCaptureFromCAM(0);
    IplImage *frame;
    cvNamedWindow("test");

    while ( 1)
    {
        frame = cvQueryFrame(capture) ;
        cvShowImage("test",  frame);
        int key = cvWaitKey(1);
        if ( key == 27 ) break;   // ESC key was pressed
    }

    // Memory deallocation
    cvReleaseCapture(&capture);
    cvDestroyWindow("test");

    return 0;
}

エラーは cvShowImage("text", frame) で発生します:

OpenCV エラー: cvGetMat、ファイル /opt/local/var/macports/build/_opt_mports_dports_graphics_opencv/opencv/work/opencv-2.4.6.1/modules/core/src/array.cpp、行のヌル ポインター (NULL 配列ポインターが渡されます) 2382 libc++abi.dylib: 例外をスローして呼び出された終了 (lldb)

エラーの内容と修正方法を教えてください。

4

1 に答える 1

0

最初に、次のように、インデックス 0 にデバイスがあるかどうかを確認する必要があります。

  if (!capture)
  {
      // print error and exit
      cout << "ERROR: Capture is null!\n";
      return -1;
  }

第二に、:

while ( capture)
{
     frame = cvQueryFrame(capture) ;
     cvShowImage("test",  frame);
     int key = cvWaitKey(1);
     if ( key == 27 ) break;   // ESC key was pressed
}

お役に立てれば

于 2013-09-04T03:39:58.937 に答える