Установите режим Raspberry Camera, используя OpenCV / C ++ - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь установить режим камер Raspberry Pi с помощью класса OpenCVs VideoCapture и установить его свойства с помощью приведенного ниже кода. Установка его в 640x480x30 кадров в секунду работает просто отлично, но 1920x1080x30 кадров в секунду обеспечивает только 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;
    }
}

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Вы когда-нибудь пробовали играть в относительно современную игру на видеокарте за 100 долларов?Та же разница.

Raspberry Pi не обладает вычислительной мощностью или памятью, способной захватывать видео высокого качества.Вот почему 640x480 работает нормально, но как только вы увеличите разрешение, FPS обанкротится.

Оптимизация вашего кода может помочь, но есть ограниченное количество вычислительной мощности, способной работать с Raspberry Pi.

0 голосов
/ 08 ноября 2018

Это сильно зависит от памяти ...

Ваш процессор отвечает за все виды вычислительных операций, которые есть ...

Итак, для того, чтобы выполнять рендеринг в высоком разрешении, ваш процессор также должен обладать мощью высокой емкости, а оптимизация кода просто для уменьшения нагрузки на процессор ...

Смотри здесь,

1920 *1080* 30 = 62208000 пикселей (больше разрешения, больше памяти)

640 * 480 * 30 = 9216000 пикселей (Меньшее разрешение, меньше памяти)

Ваше устройство должно визуализировать эти пиксели один за другим, поэтому нормально, чтобы частота кадров падала, у вашего компьютера должна быть большая память для вычисления 62208000 пикселей для 1920x1080 за одну секунду ...


Редактировать: Кроме того, я хотел бы, чтобы вы посмотрели эту статью, демонстрирующую, почему мы отдаем приоритет частоте кадров над разрешением ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...