「一気に最後まで読んだ」本、教えて下さい!

以前までXPを使用しVisual C++ 2008にopencv1.0を導入し、USB接続のwebカメラから
画像をキャプチャしリアルタイムでの画像処理などのプログラミングしていたのですが、

このたびOSをXP(32bit) からwindows7(64bit)に変え、前使っていた環境つまり
Visual C++ 2008
opencv1.0
で設定したところ、コンパイルは正常にでき、普通にpng画像などを取り込むような画像処理は可能なのですが、webカメラからの画像が読み込めず、真っ黒な画像が表示されてしまいました。

ちなみに実行したプログラムはXPの時には正常に作動していたものと同じものを実行しています。
また、webカメラ自体はamcapなどのソフトを使い動作させることはできます。

自分なりに考えた問題点は、
プログラムに問題がある、またはvisualC++を2010にする、opencvを2.2などの最新版に
更新するなどがあげられますが、

この場合なにが原因として考えられるのでしょうか?
その点アドバイスいただけたらうれしく思います。
よろしくお願いします。

実行したプログラムは以下の通りです(取り込んだ画像を表示しているだけの、シンプルなプログラムです。直すところなどありましたら教えてください。)
***************************************************
#include <cv.h>
#include <highgui.h>

#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

int main(int argc, char** argv){
int key;
CvCapture* capture;
capture=cvCreateCameraCapture(-1);
IplImage *frameImg=cvQueryFrame(capture);

cvNamedWindow("Capture",CV_WINDOW_AUTOSIZE);

while(1){
cvShowImage("Capture",frameImg);

key = cvWaitKey(1);
if(key=='q')
break;
}

cvReleaseCapture(&capture);
cvDestroyWindow("Capture");
return 0;
}
****************************************************

A 回答 (1件)

一度OpenCV1.0系のソースからビルドされてみてはいかがでしょうか?


キャプチャ関数からの戻り値をちゃんと確認しましたか?

私はOpenCVのWebカメラキャプチャー機能は使わずにDirectShowでキャプチャしてOpenCVに渡すような処理を好んで使います。
あと、OpenCV2.0以降からライセンスが厳しくなっていませんでしたか? 並列処理ライブラリがOpenMPから別のものになったことで商用で使いづらくなっていたような気がします。 まぁそういう用途で使わないよということなら問題ありませんが。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
DirectShowを調べ導入しようと思ったのですが、自分には難しかったです。
原因がわからないままopencv2.0を調べながら導入したところ、何とかwebカメラからの画像をキャプチャすることができました。
opencv1.0では対応していないようでした。
ありがとうございました。

お礼日時:2011/07/16 21:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!