OpenCV VideoCapture 无法获取帧

问题描述 投票:0回答:1

我想使用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;
}

以下是输出。 enter image description here 顺便说一句,我确信我尝试打开的相机存在,因为当我运行该过程时,我可以看到相机上的灯变成蓝色,这意味着相机已打开。

我不知道如何解决它,似乎大多数人在运行这个过程时都可以轻松实现目标,但我不是。我希望有人可以帮助我。

c++ opencv camera video-capture
1个回答
0
投票

您检查过权限吗?您是否授予应用程序通过 Windows 访问相机的权限?这是一个处理权限问题的相关问题,可能会有所帮助:Windows 10 上的 opencv python 相机权限问题

© www.soinside.com 2019 - 2024. All rights reserved.