cvCreateCameraCapture从摄像机读取数据 灰屏

上次学会了在win7 vs2015搭建OpenCV3.2开发环境,这几天练习了显示图像,播放视频,播放控制和一些简单图像处理(缩放,平滑处理,寻找边缘)今天试了下从摄像机读取数据,发现打开相机失败或者打开后图像是灰色,没采到数据。

cvCreateCameraCapture

我一直参考的是布拉德斯基的《学习OpenCV》。
代码如下,在参考代码下稍作了修改

int main1()
{
    cvNamedWindow("test9", CV_WINDOW_AUTOSIZE);
    CvCapture* capture;
    capture = cvCreateCameraCapture(-1);    
    assert(capture != NULL);    
    IplImage* frame;
    while (1)
    {   
        frame = cvQueryFrame(capture);
        if (!frame)
        {
            break;
        }

        cvShowImage("test9",frame);
        char c = cvWaitKey(50);
        if (c == 27)
        {
            break;
        }
    }

    
    cvReleaseCapture(&capture);
    cvDestroyWindow("test9");
    
    return 0;
}

仔细核对,没发现什么语法,逻辑错误,也尝试了修改cvCreateCameraCapture的参数,也尝试了网上有些网友的说的加sleep,重编OpenCV库,都无效。后来Google了很多才发现,我现在用的是最新的OpenCV3.2,而书《学习OpenCV》是之前较久版本,而IplImage是较久的C组织结构,是OpenCV1.x的版本,网上仍存在有很多这个版本的例子,而新的OpenCV2.X及以上的API使用的C++,虽然有的案例仍然适用,最好还是以新的demo程序为准吧。
要实现上面的功能是用Mat

Mat

代码而简单,如下

int main()
{
    VideoCapture capture(0);
    Mat src1;
    while (true)
    {
        capture >> src1;    
        imshow("TestWebCam", src1);
        int key = waitKey(10);
        if (key == 27)
        {
            break;
        }
    }
}

你可能感兴趣的:(cvCreateCameraCapture从摄像机读取数据 灰屏)