2011-07-15 13 views
0

こんにちは私は以下のコードを実行しようとしていますが、cvCreateFileCapture関数に問題があります。OpenCv Visual C++ 2010 Express問題

#include "stdafx.h" 
#include <iostream> 
#include <cv.h> 
#include <cxcore.h> 
#include <highgui.h> 

using namespace std; 


int main(int argc, char** argv) { 
cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE); 
// CvCapture* capture = cvCaptureFromAVI(argv[1]); // either one will work 

CvCapture* capture = cvCreateFileCapture("test.avi"); 
IplImage* frame; 
while(1) { 
    frame = cvQueryFrame(capture); 
    if(!frame) break; 
    cvShowImage("Example2", frame); 
    char c = cvWaitKey(33); 
    if(c == 27) break; 
} 
cvReleaseCapture(&capture); 
cvDestroyWindow("Example2"); 

}

当初、私は行方不明msvcr90d.dllファイルに関するエラーを取得しました。私は2008年をダウンロードしてプラットフォームのツールセットの設定を変更しなければなりませんでした。私がこれをした後、私は以下のエラーを受けました。どんな助けでも大歓迎です。

enter image description here

答えて

0

私はOpenCVのが何であるか分からないが、メモリが私を提供する場合、msvcr90d.dllはVC++ 2008用のデバッグDLLです。 プロジェクトの設定とプロパティを確認して、どのモードとどのDLLを使用/インポートしているか確認しましたか?

2

私はcvCreateFileCapture()がファイルを見つけられなかったため失敗しています。あなたは関数の復帰をチェックしていないので、分かりません。

ビデオファイルをロードできない場合はNULLを返します。

CvCapture* capture = cvCreateFileCapture("test.avi"); 
if (capture == NULL) 
{ 
    std::cout << "!!! cvCreateFileCapture failed !!!" << std::endl; 
    exit(0); 
} 
+0

私はVStudio内からアプリケーションを実行すると、ソースコードファイルと同じディレクトリにあるビデオを見つけようとします。アプリケーションがビデオファイルをロードするかどうかを確認する方法の1つは、ビデオをDebug(またはRelease)フォルダに入れてそこからアプリケーションを手動で実行することです。動画とアプリの両方が同じディレクトリになければなりません。 – karlphillip

+0

申し訳ありませんが不明な場合は、もはやNULLを返していません。 cvCreateFileCaptureが終了する前に、エラーメッセージがポップアップします。 –

+0

OpenCVのためにVS 2008をインストールしたので、使用しないでください。エラーmsgは、VS2010をまだ使用していることを明確に示しています。 ** OpenCV 2.3 **には** VS2008 **のパッケージが含まれています:http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.3/ – karlphillip

関連する問題