视频捕获期间显示灰屏 - OpenCV
Posted
技术标签:
【中文标题】视频捕获期间显示灰屏 - OpenCV【英文标题】:Gray screen being displayed during video capture - OpenCV 【发布时间】:2014-01-05 07:29:15 【问题描述】:我正在尝试在 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);
【问题讨论】:
有人知道这个吗?我得到了同样的东西。 【参考方案1】:您的代码在我的笔记本电脑上运行良好。确保您的相机设备没有被其他应用程序阻止,或者您可以尝试注释掉 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 指针。”
【讨论】:
以上是关于视频捕获期间显示灰屏 - OpenCV的主要内容,如果未能解决你的问题,请参考以下文章