Code:
与主网络摄像头(设备 0)完美配合的简单示例:
VideoCapture cap(0);
if (!cap.isOpened()) {
std::cout << "Unable to read stream from specified device." << std::endl;
return;
}
while (true)
{
// retrieve the frame:
Mat frame;
if (!cap.read(frame)) {
std::cout << "Unable to retrieve frame from video stream." << std::endl;
break;
}
// display it:
imshow("MyVideo", frame);
// check if Esc has been pressed:
if (waitKey(1) == 27) {
break;
}
// else continue:
}
cap.release();
Problem:
我有第二个网络摄像头,我想使用它。但是,当我更换VideoCapture cap(0);
with VideoCapture cap(1);
, 流已正确打开(或者至少cap.isOpened()
回报true
) but the cap.read(frame)
来电返回false
我不知道为什么。
我尝试过的:
-
我一直在尝试玩VideoCapture
的设置有点像调用:
cap.set(CV_CAP_PROP_FORMAT, CV_8UC3);
诸如此类的随机事情,但似乎没有任何帮助。
我还发现了这个:VideoCapture::读取未压缩视频失败(错误#2281) http://code.opencv.org/issues/2281,这似乎在版本 2.4.7 上得到了解决。但我刚刚将 OpenCV 更新到 2.4.8,但它仍然不起作用...
-
我尝试使用 AMCap 从该相机捕获原始视频,将其另存为aaa.avi
文件并构建VideoCapture
通过致电:
VideoCapture cap("aaa.avi");
它可以工作(同时从文件中读取)...我需要的是实时视图的实时处理。
硬件、操作系统、软件详细信息:
我的硬件:带有内置网络摄像头、始终完美运行的 HP ProBook 4510s
+ 外部网络摄像头 CANYON CNR-FWCII3,操作系统将其称为“USB 视频设备”(麻烦的一个)
操作系统、软件:Windows 8.1 Pro x86、Visual Studio 2012 Pro、OpenCV 2.4.8 ~ 使用 vc11 构建
问题:
- 我错过了什么吗?
- 我还有什么可以做的吗?
- 至少有什么方法可以检索有关问题实际情况的一些附加信息吗?
... OpenCV 的 API 在这种情况下似乎相当糟糕,并且在人们似乎面临类似问题的地方,有人声称它是“操作系统/硬件依赖”作为借口。
任何帮助将不胜感激。
一段时间后,我发现这始终只是第一个电话read
尽管这种行为的真正原因仍然未知,但失败并跳过第一帧开始正常工作。
Later 詹姆斯·巴尼特 https://stackoverflow.com/users/2197264/james-barnett(请参阅上面的评论)指出原因可能是相机需要一段时间才能准备好捕获,而我当前的解决方案看起来如下(C++11 的睡眠):
#include <chrono>
#include <thread>
...
VideoCapture cap(1);
// give camera some extra time to get ready:
std::this_thread::sleep_for(std::chrono::milliseconds(200));
if (!cap.isOpened()) {
std::cout << "Unable to read stream from specified device." << std::endl;
return;
}
while (true)
{
// retrieve the frame:
Mat frame;
if (!cap.read(frame)) {
std::cout << "Unable to retrieve frame from video stream." << std::endl;
continue;
}
// display it:
imshow("LiveStream", frame);
// stop if Esc has been pressed:
if (waitKey(1) == 27) {
break;
}
}
cap.release();
希望未来的访客会发现它有帮助:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)