我正在做一个需要低分辨率和大约110 fps的项目。因此,我买了30美元的PlayStation眼,它提供120fps的320分辨率240分辨率。
我安装了以前版本的macam(因为最新版本不起作用),并成功地获得了大约120 fps(但由于macam中的一些bug,我无法记录)。

我编写了一个简单的代码,将每个帧保存为一个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个文件每秒。有什么问题吗?
更新:i使用以下命令编译上面的代码:
g++ main.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv` -o exec -m32发布于 2011-09-16 16:19:36
cvWaitKey(10);等待10毫秒。
110 is的帧速率要求每9ms就有一次快照,另外还有保存帧的处理时间。
因此,这是一个问题,除了CV_CAP_PROP_FPS没有按预期工作。
https://stackoverflow.com/questions/7447086
复制相似问题