c++ - 在 linux(raspbian)中,opencv set(CV_CAP_PROP_FPS, 60) 不工作

标签 c++ linux opencv

我只想实时更改fps图像处理但fps没有改变

我该如何处理这个问题

有些人说你必须安装 libv4l-dev 和 v412-ctl

所以我使用 apt-get 进行安装,接下来我该如何解决这个问题?

这是我的资源

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

using namespace std;

int main (void) {

    raspicam::RaspiCam_Cv Camera;
    cv::Mat image;

    Camera.set( CV_CAP_PROP_FORMAT, CV_8UC3);
    Camera.set(CV_CAP_PROP_FPS,60);
    Camera.set( CV_CAP_PROP_FRAME_WIDTH, 320 );
    Camera.set( CV_CAP_PROP_FRAME_HEIGHT, 240);

    if (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;}

    while(1){
        Camera.grab();
        Camera.retrieve ( image);

        cv::cvtColor(image, image, cv::COLOR_BGR2RGB);
        int fps = (int)(Camera.get(CV_CAP_PROP_FPS));
        cout << "fps" << fps << endl;
        cv::imshow( "test", image );
        if ( cv::waitKey(1) > 0 ) break;

    }

    Camera.release();
}

只是 cout 是 30!!!不是 60 树莓派相机支持 640x480p 60/90fps !!

最佳答案

抱歉,如果我的英语不完美,我的第一语言是法语。

您不能更改 FPS,因为在 raspicam_cv.cpp CV_CAP_PROP_FPS 中不是函数 set() 中的有值(value)参数,它什么都不做。此外,它与 CV_CAP_PROP_MODE 相同。

并且使用 CV_CAP_PROP_FPS 参数获取函数始终发送 30。

要获得更多 fps,请转到安装 raspicam 的文件并转到 src/private/private_impl.cpp

在第 66 行,您会发现 void Private_Impl::setDefaultStateParams()State.framerate 的值更改为 60。之后,转到第 530 行并注释以下行:

if ( shutter > 330000 )
    shutter = 330000;

最后,重新构建并 make 并再次 make install。这对我有用。

关于c++ - 在 linux(raspbian)中,opencv set(CV_CAP_PROP_FPS, 60) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805412/

相关文章:

c++ - 模板方法编译错误,返回是内部类的实例

c++ - Windows 编程。用空括号创建对象

opencv - 尝试编译Make文件并运行带有视频的darknet.exe时出错

python - 如何串联2个np.ndarray?

opencv - 将 4 channel 图像转换为 3 channel 图像

c++ - 在结构中设置数组的值

c++ - C++中,为什么返回不同对象私有(private)变量的指针会导致段错误?

ios - ios中的Web服务

c++ - 警告 : 'struct curl_fileinfo' declared inside parameter list

linux - 树莓派有静态IP地址