3

私はこれに不慣れですが、問題を絞り込むのに役立つさまざまな設定を読んで試してみました!この障害を乗り越えるための助けをいただければ幸いです。

現在実行しているのは、Win 7 Ultimate、Visual C ++ 2010 Express、OpenCV 2.2.0、およびMicrosoft-LifeCam Studio Webcam-Silver1080pHDです。

ビルドエラーが発生せず、プログラムを実行するとカメラがオンになり(青いライトがオンになっていることを示します)、カメラフィードを表示する必要があると思った画面がポップアップしますが、代わりに何も入っていない灰色のボックスです。以下のコードは問題を絞り込むのに役立つと思いましたが、途方に暮れています。

int main()
{
CvCapture *webcam = NULL;
webcam = cvCreateCameraCapture(-1);
if(webcam!=NULL)
  {
   IplImage *frame = cvQueryFrame(webcam);
   cvShowImage("WEBCAM_TEST",frame);
   cvWaitKey(0);
   return 0;
  }
else
   {
     std::cout<<"CAMERA NOT DETECTED"<<std::endl;
     return 0;
   }

}
4

2 に答える 2

3

あなたのコードは時々私のシステム(Windows 7 64 VS2010 OpenCV 2.4.3)で正しい画像を表示する黒い画像を表示しています...しかし、画像をノンストップストリーミングするためにループに入れたときは問題ありません...コードを少し変更して試してみてください...

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;

int main()
{
CvCapture *webcam = NULL;
webcam = cvCreateCameraCapture(-1);

if(webcam!=NULL)
  {
    while(true)
    {
        IplImage *frame = cvQueryFrame(webcam);
        cvShowImage("WEBCAM_TEST",frame);
        cvWaitKey(20);
    }
  }
else
   {
     std::cout<<"CAMERA NOT DETECTED"<<std::endl;
     return 0;
   }

return 0;

}
于 2012-12-21T01:22:14.577 に答える
1

OpenCV では、カメラ キャプチャを作成した直後にフレームを取得すると、通常は灰色になります。次のフレームを取得するか、最初のフレームを取得する前に待機するだけです。このコード:

int _tmain(int argc, _TCHAR* argv[])
{
    VideoCapture cap(0);
    if(!cap.isOpened()) 
        return -1;

    Mat frame;
    namedWindow("01",1);

    //cap >> frame;   //option 1
    //waitKey(5000);   //option 2
    cap >> frame;
    imshow("01", frame);
    int key = waitKey(30);
    return 0;
}

灰色のフレームが表示されますが、オプション 1 またはオプション 2 のコメントを外すと、問題なく動作します。

于 2012-12-22T01:08:00.117 に答える