我喜欢用RPi至少60Hz捕捉图像。我的代码是用C++编写的,我们有一个用于C++接口的库here。但是这个库的最大频率是30Hz。 我的目标是最低60赫兹。 到目前为止我发现的是raspistill可以达到90Hz,所以我试图将我的C++程序连接到raspistill代码。 我在这里找到了一个库PiCam,它与raspistll具有直接接口。不是很确定,它可以达到60Hz,我仍然试图测试它,并有几个问题。 我的查询是使用raspistill从C++程序读取摄像头图像
(1)如何使用C++在RPi上使用60Hz fps? (2)为了连接到PiCam,我已经编译,构建并安装了这个库,没有任何问题。 但是当我捕捉时我会看到黑色的图像。可能是什么问题?我的代码的一部分如下所示。
CCamera* cam = StartCamera(640, 480,60,1,true);
char mybuffer[640 * 480 * 4];
int ret = cam->ReadFrame(0, mybuffer, sizeof(mybuffer));
cout << " ret " << ret << endl;
Mat img(480, 640, CV_8UC4,mybuffer);
imwrite("img.jpg", img);
img.jpg被黑色图像捕获。
(3)使用PiCam,我该如何更改为灰度图像?
是的,目前我使用的库,它有30Hz帧率最大。你有没有测试过90Hz fps?没有设置fps的配置。我的图像处理大约需要10ms,所以如果我从文件中读取图像,我可以达到100Hz。但我使用该库的640 x 480帧大小,我可以有30Hz的最大值。所以从相机读取对我来说是瓶颈。如何使用lbrary设置更高的fps? – batuman
我可以读取90+ fps。我不设定比率,我只是尽可能快地阅读相框。尝试读取1,000帧并测量时间 - 然后减去3秒的稳定时间。我大约14秒。 –
谢谢我将执行线程,拆分图像读取线程和处理线程。 – batuman