从我以前的问题开始,我正在尝试构建一个简单的眼动仪。决定从Linux版本开始(运行Ubuntu)。
要完成此任务,应该组织屏幕录像和网络摄像头捕获,使得来自两个流的帧完全匹配,并且每个帧中的帧数完全相同。
屏幕录像fps完全取决于相机的fps,因此每次我们从网络摄像头获取图像时,我们都可以抓住屏幕框架并保持快乐。但是,用于快速截屏的所有工具(例如ffmpeg)都会返回.avi文件作为结果,并且需要已知的fps才能启动。
另一方面,像Java + Robot或ImageMagick这样的工具似乎需要大约20ms才能返回.jpg截图,这对于任务来说非常慢。但是,每次抓取网络摄像头帧后都可以请求它们并提供所需的同步。
所以子问题是:
对于我的任务,我可以使用C ++或Java。
实际上,我是一个界面设计师,而不是驱动程序员,而且这个任务似乎很低级。我将不胜感激任何建议和提示!
答案 0 :(得分:1)
使用OpenCV的HighGUI中的cvGetCaptureProperty(CvCapture* capture, int property_id)
功能property_id = CV_CAP_PROP_FPS
来确定网络摄像头捕获的每秒帧数。
使用示例:
CvCapture *capture = 0;
double fps = 0.0;
capture = cvCaptureFromCAM( 0 );
fps = cvCaptureProperty(capture, CV_CAP_PROP_FPS);