使用opencv和PlayStation Eye进行高速视频捕捉

Mic*_*kan 5 c++ macos camera opencv

我正在开发一个需要低分辨率和大约110 fps的项目.所以我买了30美元的PlayStation眼睛,在240分辨率下提供120 fps的320分辨率.

我安装的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;
 }
Run Code Online (Sandbox Code Playgroud)

但它每秒只能节省30帧.我的意思是它创建30个文件而不是每秒110个文件.有什么问题 ?

更新:我使用以下命令编译上面的代码:

g++ main.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv` -o exec -m32
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 1

cvWaitKey(10);等待10ms。

110Hz 的帧速率需要每 9ms 进行一次快照,此外还有保存帧的处理时间。

因此,除了CV_CAP_PROP_FPS未按预期工作之外,这也是一个问题。