c++ - Win10 VS17 中的 OpenCV VideoCapture 无法打开超过四个 USB 3.0 摄像头
问题描述
我正在尝试使用 OpenCV 库中的 VideoCapture 函数在 VS17 win10 OpenCV 环境中设置多摄像头系统。相机为 Basler USB 3.0(3840*2748 单色)。我可以毫无问题地打开和流式传输多达四个摄像机。但是,无法打开第五个或更多相机。然而,使用 Basler 软件可以毫无问题地访问所有六台相机。我不确定是否存在硬件限制(如 USB 带宽或 PCI 总线),这不应该是因为在 Basler SDK 中,所有相机都可以正常使用。
我尝试设置较低分辨率的图像以查看它是否是 USB 带宽限制,但仍然无法正常工作。
诠释主要(){
VideoCapture cap0(0), cap1(1), cap2(2), cap3(3), cap4(4), cap5(5);
Mat ca1, ca2, ca3, ca4, ca5, ca6;
cv::namedWindow("Camera1", WINDOW_NORMAL);
cv::namedWindow("Camera2", WINDOW_NORMAL);
cv::namedWindow("Camera3", WINDOW_NORMAL);
cv::namedWindow("Camera4", WINDOW_NORMAL);
cv::namedWindow("Camera5", WINDOW_NORMAL);
cv::namedWindow("Camera6", WINDOW_NORMAL);
while (true) {
if (cap0.grab()) {
cap0.retrieve(ca1);
}
if (!cap0.grab()) {
std::cout << "camera 0 cannot be grabbed\n";
}
if (cap1.grab()) {
cap1.retrieve(ca2);
}
if (!cap1.grab()) {
std::cout << "camera 1 cannot be grabbed\n";
}
if (cap2.grab()) {
cap2.retrieve(ca3);
}
if (!cap2.grab()) {
std::cout << "camera 2 cannot be grabbed\n";
}
if (cap3.grab()) {
cap3.retrieve(ca4);
}
if (!cap3.grab()) {
std::cout << "camera 3 cannot be grabbed\n";
}
if (cap4.grab()) {
cap3.retrieve(ca5);
}
if (!cap4.grab()) {
std::cout << "camera 4 cannot be grabbed\n";
}
if (cap5.grab()) {
cap3.retrieve(ca6);
}
if (!cap5.grab()) {
std::cout << "camera 5 cannot be grabbed\n";
}
cv::imshow("Camera1", ca1);
cv::imshow("Camera2", ca2);
cv::imshow("Camera3", ca3);
cv::imshow("Camera4", ca4);
cv::imshow("Camera5", ca5);
cv::imshow("Camera6", ca6);
char c = waitKey(1);
if (c == 'q') {
destroyAllWindows();
break;
}
}
cap0.release();
cap1.release();
cap2.release();
cap3.release();
cap4.release();
cap5.release();
return 0;
}
在 cap4.grab() 处编译失败,基本上它说相机 4 和 5 不能被抓取(打开)。有人可以帮忙吗?非常感谢您提前。
解决方案
推荐阅读
- javascript - Firebase 电子邮件验证流程
- json - VSCode没有添加正确设置的右括号
- angular - 通过服务在相同或其他组件中进行更改后立即更新组件中的属性
- python - 如何处理预订项目时间的费率限制 - Exact Online
- c# - 如何在 .NET Core 中使用异步代码记录干净的堆栈跟踪?
- reactjs - 来电者没有权限,但我在验证电子邮件后重新加载用户(firebase + react/next)
- testing - 如何将 TestCafe 结果上传到 TestRail 帐户?
- python - 从 pandas 单元格中提取特定符号,然后用它们作为键的 dict 中的值替换它们
- r - coxph 的块代码,用于在降价中作为文本发布的特定值
- python-3.x - 我可以获取所有 Qt 不使用的命令行参数吗?