c++ - 无法使用罗技 C920 访问 cv::VideoCapture 的属性

标签 c++ opencv webcam

我正在使用 Logitech C920 和 OpenCV 开发一个小型网络摄像头应用程序。

在给定的分辨率下,我实际上可以毫无问题地从相机获取图像。但是除了框架的宽度和高度,我无法访问相机中的任何设置。我有以下代码。 如您所料,代码生成了除前两行之外的所有零行。

我做错了什么吗?或者这是罗技的另一个专有 BS?如果这是 OpenCV 的限制,是否有任何其他选项可以在 Windows 操作系统中为该网络摄像头开发应用程序?

    m_cam.open(0);
    if(!m_cam.isOpened() )  // check if we succeeded
    {
        std::cerr << "ERROR: Could not open cameras." << std::endl;
        return;
    }

    int ex = static_cast<int>(m_cam.get(CV_CAP_PROP_FOURCC));
    char EXT[] = {ex & 0XFF , (ex & 0XFF00) >> 8,(ex & 0XFF0000) >> 16,(ex & 0XFF000000) >> 24, 0};
    m_cam.set(CV_CAP_PROP_FOURCC,CV_FOURCC('H','2','6','4')); 
    m_cam.set(CV_CAP_PROP_FRAME_WIDTH,1280);//2304);//1829//1200//800
    m_cam.set(CV_CAP_PROP_FRAME_HEIGHT,720);//1536); //1080//800//600   
    m_cam.set(CV_CAP_PROP_FPS, 30);
    //m_cam.set(CV_CAP_PROP_EXPOSURE,0);
    std::cout<< m_cam.get(CV_CAP_PROP_FRAME_WIDTH) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_FRAME_HEIGHT) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_FPS) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_EXPOSURE) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_FORMAT) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_CONTRAST) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_BRIGHTNESS) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_SATURATION) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_HUE) << std::endl; 
    std::cout<< m_cam.get(CV_CAP_PROP_POS_FRAMES) << std::endl; 

最佳答案

在安装 dshow 和 ffmpeg 后通过重建 OpenCV 解决了这个问题。我现在甚至可以设置一些值,例如帧速率,但按指定工作的相机似乎是另一回事。在我的例子中,在不设置帧速率的情况下设置分辨率后,相机分辨率变为 640 x 480。虽然我的计算机安装了 H264 解码器,但 1920 x 1080 会产生 5-7 fps 的 OpenCV。

关于c++ - 无法使用罗技 C920 访问 cv::VideoCapture 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16432676/

相关文章:

c++ - 访问 ".txt"文件中的信息并转到确定的行

c++ - 删除算子内存管理

android - OpenCV - 在带有水印的android中录制视频

python - 可以从OpenCV中的视频文件中删除帧

apache-flex - 使用 Flex 进行网络摄像头录制是否严格要求媒体服务器(FMS、Red5、Wowza 等)?

c# - 网络摄像头点对点流式传输

c++ - 将方法传递给包含对象指针的集合的所有元素,C++

c++ - 在 C++ 中除以零程序崩溃

python - python 中的数字识别(OpenCV 和 pytesseract)

ffmpeg - 使用 ffmpeg 从网络摄像头录制声音