视频捕获期间显示灰屏 - OpenCV

Gray screen being displayed during video capture - OpenCV

本文关键字:OpenCV 显示 视频      更新时间:2023-10-16

我正在尝试在OpenCV中运行一个从网络摄像头捕获视频的程序。每次我运行该程序时,都会显示灰色屏幕。我最初尝试使用 CvCapture 函数在 C API 中编程,它工作得很好。但是现在在C++ API中,当我尝试运行以下使用VideoCapture的代码时,会显示灰色屏幕。

如何解决此问题?请帮忙。我的OpenCV版本是2.4.6,我在MS Visual Studio 2010 Professional中运行代码。

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(int argc, char** argv)
{
    VideoCapture capture(0);
    Mat frame;
    if( !capture.isOpened() )
        throw "Error when reading steam_avi";
    namedWindow( "w", 1);
    for( ; ; )
    {
        capture.read(frame);
        if(frame.empty())
            break;
        imshow("w", frame);
        waitKey(1); 
    }
    waitKey(0);  
}

您的代码在我的笔记本电脑上运行良好。确保您的相机设备未被其他应用程序阻止,或者您可以尝试注释掉 namedWindow 调用(但这应该不是问题),实际上您可以使用以下循环从相机中抓取视频帧:

VideoCapture capture(0);
Mat frame;
if( !capture.isOpened() )
    throw "Error when reading steam_avi";
namedWindow( "w", 1);
while(capture.read(frame))
{
    imshow("w", frame);
    waitKey(1); 
}
waitKey(0);

根据文档:"如果没有抓取任何帧(相机已断开连接,或者视频文件中没有更多帧),则方法返回 false,函数返回 NULL 指针。