为什么OpenCV在Raspberry Pi 3B +上表现不佳?

时间:2018-07-11 04:36:49

标签: c++ opencv opencv3.0

在Raspberry Pi 3B +(手臂处理器)上运行

OpenCV C ++ 3.4静态库由带有相关标志-DENABLE_NEON=ON -DCMAKE_BUILD_TYPE=Release -DWITH_V4L=ON的源代码构建的库

使用基本的ELP USB网络摄像头(不使用raspi摄像头,因为我最终需要多个摄像头)

这个用于捕获和渲染帧的基本程序得到的像是2或3 FPS。那可能是不对的!

#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/shape.hpp>
#include <iostream>
#include <stdarg.h>
#include <thread>

#include "time.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv ) {

  VideoCapture cap(0);
  cap.set(CAP_PROP_FRAME_WIDTH, 320);
  cap.set(CAP_PROP_FRAME_HEIGHT, 240);
  cap.set(CAP_PROP_FPS, 30);
  cap.set(CAP_PROP_FOURCC, CV_FOURCC('M','J','P','G'));

  long startMs = timeMs();
  int count = 0;
  for(;;) {
    Mat frame;
    cap >> frame;
    imshow("Camera", frame);

    if (++count == 30) {
      long elapsedMs = (timeMs() - startMs);
      double fps = count * 1000.0 / elapsedMs;
      cout << "FPS: " << fps << endl;
      startMs = timeMs();
      count = 0;
    }

    waitKey(1);
  }

  return 0;
}

1 个答案:

答案 0 :(得分:0)

在似乎经常发生的情况下,在提出并提出问题之后,答案就显而易见了。

问题是我的摄像机的v4l2-ctl配置是在某些修补过程中设置的较早,并且在exposure_absolute设置很高的情况下仍处于活动状态,这限制了帧速率