こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

opencv1.0 画面が真っ黒

以前まで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;
}
****************************************************

投稿日時 - 2011-07-13 22:38:04

QNo.6874188

すぐに回答ほしいです

質問者が選んだベストアンサー

一度OpenCV1.0系のソースからビルドされてみてはいかがでしょうか?
キャプチャ関数からの戻り値をちゃんと確認しましたか?

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

投稿日時 - 2011-07-14 09:33:57

お礼

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

投稿日時 - 2011-07-16 21:22:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問