繁体   English   中英

使用OpenCV / C ++设置Raspberry Camera模式

[英]Set Raspberry Camera mode using OpenCV / C++

我正在尝试使用OpenCVs VideoCapture类设置Raspberry Pi相机模式,并使用以下代码设置其属性。 将其设置为640x480x30fps可以很好地工作,但是1920x1080x30 fps只能每秒传输3或4帧。

谁能告诉我我所缺少的吗? 非常感谢。

#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>

int main (){
    int height(1080);
    int width(1920);

    cv::VideoCapture cap(0);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, height);
    cap.set(CV_CAP_PROP_FRAME_WIDTH, width);
    cap.set(cv::CAP_PROP_FOURCC, 0x21);
    cap.set(cv::CAP_PROP_FPS, 30);

    cv::Mat currentFrame;

    while(1){
        cap >> currentFrame;
        //do stuff 
        char c = (char)cv::waitKey(1);
        if (c == 27) break;
    }
}

您是否尝试过在100美元的图形卡上玩相对现代的游戏? 一样的区别。

Raspberry Pi没有能够捕获高质量视频的处理能力或内存。 这就是为什么640x480可以正常工作的原因,但是一旦您提高了FPS的分辨率就可以了。

代码的优化可能会有所帮助,但是Raspberry Pi具有有限的处理能力。

这在很大程度上取决于内存 ...

您的处理器负责其中存在的每种计算操作...

因此, 为了实现高分辨率渲染,您的处理器也必须具有高端能力,优化代码只是为了减少CPU负载...

看这里,

1920 * 1080 * 30 = 62208000像素 (更高的分辨率,更多的内存)

640 * 480 * 30 = 9216000像素 (分辨率较低,内存较少)

您的设备必须一一渲染这些像素,因此帧速率下降是正常的,您的计算机必须具有很大的内存才能在一秒钟内为1920x1080计算62208000像素...


编辑:另外,我想请您看一下这篇文章,说明为什么我们优先考虑帧速率而不是分辨率...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM