C++ 使用opencv和PlayStation Eye进行高速视频捕获

C++ 使用opencv和PlayStation Eye进行高速视频捕获,c++,macos,opencv,camera,C++,Macos,Opencv,Camera,我正在做一个项目,需要低分辨率和大约110帧。所以我买了30美元的PlayStation eye,它的分辨率为240,分辨率为320帧,每秒120帧 我安装了以前版本的macam(因为最新版本不起作用),并成功地获得了大约120 fps(但由于macam中的一些bug,我无法录制) 我编写了一个简单的代码,将每个帧保存为jpg文件: #include <stdio.h> #include "cv.h" #include "highgui.h" #include<ios

我正在做一个项目,需要低分辨率和大约110帧。所以我买了30美元的PlayStation eye,它的分辨率为240,分辨率为320帧,每秒120帧

我安装了以前版本的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;
 }
cvWaitKey(10)等待10毫秒

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


因此,这是一个问题,除了
CV\u CAP\u PROP\u FPS
未按预期工作之外。

可能重复“否”,它不是。。。我同意@genpfault的说法,我们知道CV\u CAP\u PROP\u FPS不能按预期工作。这个问题有一些关于如何让OpenCV使用自定义FPS设置的有用信息。@Michel Kogan,我遇到了同样的问题,你找到解决方法了吗?如果使用cvWaitKey(1),会发生什么情况?原则上,它只会休眠1毫秒,因此不会影响FPS。然而,我仍然得到非常慢的FPS。你说得很对,CV_CAP_PROP_FPS似乎没有任何效果。OpenCV2.4.3可能会对您有所帮助(但我只是阅读了它,没有尝试过)我以前尝试过。如果将其更改为9,则获取错误:exec[53311:c317]***\u nsautoreleasenool():NSThread类的对象0xe168a0在没有池的情况下自动释放-仅leaking@Michel:那么您只是因为不理解错误才使用它?不,因为问题不在于那行代码。如果我把它改为60,我仍然可以获得30 fps。@Michel:我看不出这是怎么可能的,除非它的性能完全没有文档记录。
g++ main.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv` -o exec -m32