我希望将OpenCV计算机视觉库中的操作实时应用于从我的计算机显示器捕获的视频。这种特殊情况下的想法是在流行游戏的游戏过程中检测有趣的功能,并为用户提供增强的体验;但我可以想到其他几种场景,人们也希望能够实时访问这些数据。无论如何,对于开发阶段,使用录制的视频可能是可以接受的,但对于最终的应用程序性能和响应性显然是至关重要的。
到目前为止,我正尝试在Ubuntu 10.10上这样做,我更喜欢使用类似UNIX的系统,但任何选择都是有意义的。我的C语言能力非常有限,所以每当可以通过Python与OpenCV对话时,我都会尝试使用它。请注意,我尝试不是从相机设备捕获,而是从显示输出的实时流中捕获;我不知道如何获取输入。据我所知,CaptureFromCAM只适用于摄像设备,在我看来,最终的实时性能要求使得文件存储和通过CaptureFromFile回读是一个不好的选择。
到目前为止,我找到的最有希望的方法似乎是使用带x11grab选项的ffmpeg从X11显示屏捕获;(例如,命令ffmpeg -f x11grab -sameq -r 25 -s wxga -i :0.0 out.mpg将display 0的1366x768捕获到'out.mpg')。我设想可以将来自CaptureFromFile的输出流作为一个文件由OpenCV读取(假设使用CaptureFromFile函数),可能是通过使用管道;但这一切都比我以前处理过的要高得多,我真的需要一些指导。你认为这种方法可行吗?更重要的是,你能想到一个更好的吗?你会怎么做?
发布于 2010-11-01 22:28:29
如果你正在寻找实时性能,我会放弃x11grab或任何其他命令行工具来截图。
编写你自己的屏幕采集器,这样你就可以直接把它发送到OpenCV。如果你想知道如何在X11下做到这一点,你可以看看xwd source code。
发布于 2010-10-31 03:51:09
我认为主要的挑战是实时性要求。我认为你必须为OpenCv创建一些软件,灵感来自于FMPEG.的视频抓取代码。但这肯定会涉及到C级别的编码。
我的建议是首先尝试让你的视觉算法正确,使用ffmpeg捕获的视频。
https://stackoverflow.com/questions/4060265
复制相似问题