0

カメラを使用して入力ストリームで画像処理を実行したいのですが、プログラムを実行すると「ソースのキャプチャ」を求めるウィンドウが表示され、その後「OK」または「適用」しても何も起こりません。

しかし、カメラの代わりにビデオ ファイルを使用すると、プログラムは問題なく動作します。

コードは次のとおりです。

int MainWindow::on_CameraOpen_triggered()
{
// programming done in Qt and using Opencv 2.2.
// all the variables are defined & declared in private of header file
// there is no compilation error
// return type of the function is 'int'
// Following program works fine if name of video file is mentioned 
// instead of '0' is the line below
VideoCapture capture(0);

if(!capture.isOpened())
    return 1;

    bool stop(false);
    double rate = capture.get(CV_CAP_PROP_FPS);
    namedWindow("Extracted Frame");
    int delayVideo = 1000/rate;

    while(!stop)
    {
        if(!capture.read(frame))
        {
            break;
        }
        imshow("Extracted frame", frame);
        if(waitKey(delayVideo)>=0)
        {
            stop = true;
        }
    }

capture.release();
}

次のリンクで修正されたバグを削除しようとしました: https://code.ros.org/trac/opencv/changeset/4400

https://code.ros.org/trac/opencv/browser/trunk/opencv/modules/highgui/src/precomp.hpp?rev=4400

カメラは、gtalk やその他のカメラ ソフトウェアで正常に動作します。

何ができるかを親切に提案/ガイドしてください。

どうもありがとうございました。

よろしく、データベース

4

2 に答える 2

0

すべてが OpenCV で正しく動作するかどうかを調べるために使用できる別の最小限の例を次に示します。

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

int main () {
    cv::VideoCapture cam = cv::VideoCapture(0);
    cv::Mat frame;
    cv::namedWindow ("Demo", CV_WINDOW_AUTOSIZE);

    while (1) {
        cam >> frame;
        imshow ("Demo", frame);
    }

    cam.release();
    return 0;
}

問題が OpenCV にあるのか、Qt プログラムにあるのかを確認してみてください。

于 2012-05-03T12:10:32.160 に答える