我试图捕获视频流过我的罗技C920中的OpenCV。 使用LabVIEW,我可以以30fps的1080p访问MJPG流。 在OpenCV中本人水平有限要么5fps的或640×480。
下面是相机设置相关的代码:
this->camRef.set(CV_CAP_PROP_FRAME_WIDTH, 1920);
this->camRef.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);
this->camRef.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','J','P','G'));
这些都返回1,但我得到1080的5fps的流对应于YUY2流。
如果我添加下面一行:
this->camRef.set(CV_CAP_PROP_FPS, 30);
这将返回0。我在640×480弄30 fps的流。 对我来说,它看起来像MJPG设置不被接受,但我不知道该怎么做或如何解决这个问题。
编辑:下面导致程序崩溃。
this->camRef.read(this->image);
std::cout<< this->camRef.get(CV_CAP_PROP_FOURCC) << std::endl;
std::cout<< this->camRef.set(CV_CAP_PROP_FRAME_WIDTH, config.width) << std::endl;
std::cout<< this->camRef.set(CV_CAP_PROP_FRAME_HEIGHT, config.height) << std::endl;
std::cout<< this->camRef.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','J','P','G')) << std::endl;
std::cout<< this->camRef.get(CV_CAP_PROP_FOURCC) << std::endl;
然后在我运行代码,我有以下:
void camera::run()
{
while(true)
{
if(this->camRef.read(this->image) == 0)
{
if(this->capture)
{
cv::imwrite(fileName,this->image);
this->count++;
}
}
msleep(15);
}
}
EDIT2:溶液是设置相机的高度和宽度之前设置四字符码编解码器。