我想在Windows操作系统上使用C++环境实现从当前连接的摄像机获取实时摄像机馈送的要求。然而,经过多次尝试和调试,我发现我的计算机无法成功从摄像机中获取帧。所以,我写了一个简单的程序,旨在完成一个任务:在屏幕上显示来自ID为0的摄像头设备的视频源。然而,它未能按预期工作。我注意到VideoCapture video
成功打开了ID为0的设备,但在执行video >> picture;
后,图片对象仍然为空,这对我来说是很复杂的。下面是完整的代码。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
try {
VideoCapture video;
Mat picture;
video.open(0);
if (!video.isOpened())
{
cout << "Failed to open camera" << endl;
return -1;
}
while (1)
{
video >> picture;
if (picture.empty()) {
cout << "Empty frame" << endl;
break;
}
imshow("input", picture);
if (waitKey(30) == 27)
break;
}
}
catch (const cv::Exception& e) {
cout << "OpenCV exception: " << e.what() << endl;
}
catch (const std::exception& e) {
cout << "Exception: " << e.what() << endl;
}
catch (...) {
cout << "Unknown exception occurred" << endl;
}
return 0;
}
下面是输出. enter image description here顺便说一下,我确定我试图打开的相机存在,因为我可以看到我的相机上的灯变成蓝色,当我运行该过程,这意味着相机是开着的。
我不知道如何修复它,似乎大多数人都可以很容易地实现目标时,运行这个过程,但我不是。我希望有人能帮助我。
1条答案
按热度按时间olhwl3o21#
您是否检查过权限?您是否授予您的应用程序通过Windows访问相机的权限?以下是一个处理权限问题的相关问题,可能会有所帮助:opencv python camera permission issue on Windows 10