如何使用Raspberry Pi相机作为C ++ OpenCV中的视频输入

how to use the raspberry pi camera as video input in c++ openCV?

本文关键字:OpenCV 的视频 输入 Raspberry 何使用 Pi 相机      更新时间:2023-10-16

这就是我通常在openCV中处理视频的方式。

#include <iostream>
#include<opencv2/opencv.hpp>
int main(int argc, char** argv)
{
        Mat output;
        VideoCapture cap(CV_CAP_ANY);

        if( !cap.isOpened() )
        {
            cout << "Could not initialize capturing...n";
            return 0;
        }

        while(1){
            cap >> output;
            imshow("webcam input", output);
            char c = (char)waitKey(10);
            if( c == 27 ) break;
          }
}

现在我有一个树莓派相机,我有以下最小:

#include <iostream>
#include<opencv2/opencv.hpp>
#include <raspicam/raspicam_cv.h>

int main(int argc, char** argv)
{
        Mat image, output;
        //VideoCapture cap(CV_CAP_ANY);
    raspicam::RaspiCam_Cv cap;
        if( !cap.isOpened() )
        {
            cout << "Could not initialize capturing...n";
            return 0;
        }
        while(1){
            cap >> output;
            imshow("webcam input", output);
            char c = (char)waitKey(10);
            if( c == 27 ) break;
         }
}

但是后者不起作用,这是我编译时输出到终端的内容:http://paste.ubuntu.com/24324541/

有人可以告诉我正确的方法是什么吗?

谢谢

根据文档,您不能将其用作流,而是必须执行以下操作:

while(1){
    cap.grab();
    cap.retrieve(output);
    imshow("webcam input", output);
    char c = (char)waitKey(10);
    if( c == 27 ) break;
}