我想使用C++环境在Windows操作系统上实现从当前连接的摄像头获取实时摄像头信息的需求。然而,经过多次尝试和调试,我发现我的计算机无法成功从相机中检索帧。 因此,我编写了一个简单的程序,旨在完成一项任务:在屏幕上显示 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;
}
以下是输出。 顺便说一句,我确信我尝试打开的相机存在,因为当我运行该过程时,我可以看到相机上的灯变成蓝色,这意味着相机已打开。
我不知道如何解决它,似乎大多数人在运行这个过程时都可以轻松实现目标,但我不是。我希望有人可以帮助我。
您检查过权限吗?您是否授予应用程序通过 Windows 访问相机的权限?这是一个处理权限问题的相关问题,可能会有所帮助:Windows 10 上的 opencv python 相机权限问题