0

我想使用相机并对输入流执行图像处理,但是当程序执行时,会出现一个窗口询问“捕获源”,然后当“确定”或“应用”时没有任何反应。

但是如果我使用视频文件而不是相机,程序运行得很好。

这是代码:

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

试试这个代码:

# include <opencv2/highgui/highgui.hpp>

CvCapture *_capture;


_capture = cvCaptureFromCAM(-1);
//_capture = cvCaptureFromFile("test1.mp4");
if (!_capture)
{
    //"Unable capture video"
    return 1;
}

double rate = cvGetCaptureProperty(_capture, CV_CAP_PROP_FPS);

//...

cv::Mat = cvQueryFrame(_capture);

//...
于 2012-05-03T05:50:29.483 回答
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 回答