当我通过'cvQueryFrame'使用openCV捕获投影图案的相机图像时,通常会遇到意想不到的伪像:投影仪的扫描线。也就是说,由于我无法精确计时“cvQueryFrame”捕获图像的时间,因此拍摄的图像不符合投影机的恒定30Hz刷新。结果是那些将摄像机转到电视屏幕上的人熟悉的典型水平波段。
缺少求助于硬件同步的人,有没有人在openCV中实现近似(例如“足够好”)非正式的投影机-摄像机同步而取得成功?
以下是我正在考虑的两个解决方案,但希望这是一个足够常见的问题,可能会存在一个优雅的解决方案。我的想法不那么优雅:
我在OpenCV上使用了几台相机,最近使用的是佳能SLR(7D)。
最佳答案
我认为您提出的解决方案不起作用。 cvQueryFrame基本上从相机驱动程序的缓冲区复制下一个可用的帧(或在内存映射的区域中前进一个指针,或者根据驱动程序的实现等等)。
无论如何,cvQueryFrame调用的时间对捕获图像的时间没有影响。
因此,正如您所建议的那样,硬件同步实际上是唯一的途径,除非您拥有特殊的摄像头(如点式灰度摄像头),它可以使您对帧集成开始触发器进行明确的软件控制。