使用 opencv 和 PlayStation Eye 进行高速视频捕获
我正在开发一个需要低分辨率和大约 110 fps 的项目。所以我买了 30 美元的 PlayStation Eye,它在 320 分辨率和 240 分辨率下提供 120 fps。
我安装了以前版本的 macam(因为最新版本不起作用)并成功获得大约 120 fps(但由于 macam 中的一些错误我无法录制)。
我编写了一个简单的代码将每一帧保存为 jpg 文件:
#include <stdio.h>
#include "cv.h"
#include "highgui.h"
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
int i = 0;
char *buf;
IplImage *frame;
CvCapture* capture = cvCreateCameraCapture(3);
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 240);
cvSetCaptureProperty( capture, CV_CAP_PROP_FPS, 110);
while (true) {
frame = cvQueryFrame(capture);
asprintf(&buf, "%d.jpg", i++);
cvShowImage("1", frame);
cvSaveImage(buf, frame);
cvWaitKey(10);
}
return 0;
}
但每秒只能保存 30 帧。我的意思是它每秒创建 30 个文件而不是 110 个文件。有什么问题吗?
更新:我使用以下命令编译上面的代码:
g++ main.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv` -o exec -m32
I'm working on a project which need low resolution and about 110 fps. So i bought 30$ PlayStation eye which provide 120 fps in 320 in 240 resolution.
I installed previous version of macam( because latest version didn't work ) and successfully get about 120 fps( but i can't record because of some bugs in macam ).
I wrote a simple code to save each frame as a jpg file:
#include <stdio.h>
#include "cv.h"
#include "highgui.h"
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
int i = 0;
char *buf;
IplImage *frame;
CvCapture* capture = cvCreateCameraCapture(3);
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 240);
cvSetCaptureProperty( capture, CV_CAP_PROP_FPS, 110);
while (true) {
frame = cvQueryFrame(capture);
asprintf(&buf, "%d.jpg", i++);
cvShowImage("1", frame);
cvSaveImage(buf, frame);
cvWaitKey(10);
}
return 0;
}
but it's only save 30 frames per second. I mean it creates 30 files instead of 110 files per second. What's the problem ?
Update: i compile above code using following command:
g++ main.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv` -o exec -m32
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
cvWaitKey(10);
等待 10 毫秒。110Hz 的帧速率需要每 9ms 进行一次快照,此外还有保存帧的处理时间。
因此,除了
CV_CAP_PROP_FPS
无法按预期工作之外,这也是这里的一个问题。cvWaitKey(10);
waits for 10ms.A frame rate of 110Hz requires a snapshot every 9ms, plus there is processing time for the saving of the frame.
So that's an issue here, in addition to
CV_CAP_PROP_FPS
not working as expected.