この問題はかなり一般的であることは認識していますが、これまでに約 4 日間かけて、インターネットで見つけたすべての賢明なアドバイスを使用して自分で修正しようとしましたが、残念ながら失敗しました。
VisualStudio 2012 で openCV2.4.6 を動作させることができました。または、少なくとも、この例でウェブカメラからビデオをストリーミングできた後に想定したことは次のとおりです。
#include "stdafx.h"
#include "opencv2/opencv.hpp"
int main( int argc, const char** argv )
{
CvCapture* capture;
IplImage* newImg;
while (true)
{
capture = cvCaptureFromCAM(-1);
newImg = cvQueryFrame( capture );
cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
cvShowImage("Window1", newImg);
int c = cvWaitKey(10);
if( (char)c == 27 ) { exit(0); }
}
cvReleaseImage(&newImg);
return 0;
}
すべてうまくいったので、いじってみることにし、RGB をグレースケールに変換するなどの簡単な画像処理操作を使用しようとしました。コードを次のように変更しました。
#include "stdafx.h"
#include "opencv2/opencv.hpp"
int main( int argc, const char** argv )
{
CvCapture* capture;
IplImage* img1;
IplImage* img2;
while (true)
{
capture = cvCaptureFromCAM(-1);
img1 = cvQueryFrame( capture );
img2 = cvCreateImage(cvGetSize(img1),IPL_DEPTH_8U,1);
cvCvtColor(img1,img2,CV_RGB2GRAY);
cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Window2", CV_WINDOW_AUTOSIZE);
cvShowImage("Window1", img1);
cvNamedWindow("Window2", CV_WINDOW_AUTOSIZE);
int c = cvWaitKey(10);
if( (char)c == 27 ) { exit(0); }
}
cvReleaseImage(&img1);
cvReleaseImage(&img2);
return 0;
}
そして悪夢が始まった場所。私は取得し続けます
opencvbegginer.exe の 0x000007FEFD57AA7D で未処理の例外: Microsoft C++ 例外: cv::Exception at memory location 0x000000000030F920.
私はいくつかの調査を行い、opencv_core246.lib を opencv_core246d.lib に交換するなど、いくつかの解決策を試しました。すべての再配布可能なパッケージを更新しようとしましたが、このエラーが発生し続けるという事実は変わりませんでした。別の方法で修正する方法を見つけようとしましたが、C/C++ プロパティに移動してランタイム ライブラリを MTd に変更するように指示しているフォーラムを見つけたので、... 私もこれを試しましたが、できる限り今では気づきました-うまくいきませんでした。
現時点では、これを修正する方法についてのアイデアが不足しているので、何か助けていただければ幸いです.
乾杯
PS。追加する重要なこと:ハンドルされていない例外を取得したとき、opencvは「私に話しかけました」と言いました
OpenCV エラー: 不明な関数の引数が正しくありません、ファイル ......\scr\opencv\modules\core\src\array.cpp、行 1238
しかし、私はその頃から、自分のばかげた抵抗力のあるコードで十分に賢くないとすでに想定しており、有能な人々によって書かれた他のいくつかのコードを試してみました - 残念ながら、まったく同じエラーが発生し続けます (残りは上記のものを変更した後も同じです)。