【发布时间】:2011-08-15 23:44:51
【问题描述】:
当我使用 openCV 通过 'cvQueryFrame' 捕获投影图案的相机图像时,我经常会得到一个意想不到的伪像:投影仪的扫描线。也就是说,由于我无法精确计时“cvQueryFrame”捕获图像的时间,因此拍摄的图像不尊重投影仪的恒定 30Hz 刷新。结果是那些将摄像机转向电视屏幕的人所熟悉的典型水平带。
没有求助于硬件同步,有没有人在 openCV 中通过近似(例如,“足够好”)非正式的投影仪-相机同步取得了一些成功?
以下是我正在考虑的两个解决方案,但希望这是一个足够常见的问题,可能存在一个优雅的解决方案。我不太优雅的想法是:
在显示视频的 cvWindow 中添加一个滑块控件,供用户控制从 0 到 1/30 秒的时间偏移,然后在此间隔设置一个队列计时器。每当需要一个帧时,而不是直接调用'cvQueryFrame',我会请求回调以在下次触发计时器时执行'cvQueryFrame'。这样,理论上用户可以使用滑块来减少扫描线伪影,前提是定时器分辨率足够。
通过“cvQueryFrame”接收帧后,通过查找垂直像素列的 HSV 值中的增量来检查帧的水平带。当然,这只有在被拍摄对象在平滑变化的光线下包含均匀颜色的基准条时才有效。
我用过几台带有 OpenCV 的相机,最近是佳能 SLR (7D)。
【问题讨论】:
标签: opencv camera sync projector