2011-04-30 80 views
1

當我通過'cvQueryFrame'使用openCV捕捉投影圖案的照相機圖像時,我經常會得到一個意想不到的工件:投影機的掃描線。也就是說,由於「cvQueryFrame」捕獲圖像時我無法精確計時,因此拍攝的圖像並不考慮投影機的恆定30Hz刷新。其結果是那些將視頻攝像機轉向電視屏幕的人所熟悉的典型水平頻帶。openCV:是否有可能使cvQueryFrame與投影儀同步?

短訴諸硬件同步的,有沒有人曾在OpenCV的一些成功的近似(例如,「足夠好」)非正式投影器相機同步?

下面是兩個解決方案我正在考慮,但希望這是一個很好的解決方案可能存在一個共同的問題不夠。我的低於優雅的想法是:

  • 在cvWindow添加的滑塊控制顯示視頻的用戶控制的定時從0偏移1 /第30秒,然後設置隊列定時器在此間隔。無論何時需要幀,我都會請求一個回調函數在下一次觸發定時器時執行'cvQueryFrame'。通過這種方式,理論上用戶可以使用滑塊來減少掃描線僞影,只要定時器分辨率足夠。

  • 在通過'cvQueryFrame'接收到一個幀後,通過查找像素垂直列的HSV值中的增量來檢查該告警水平帶的幀。當然,這隻有在拍攝對象在平穩變化的照明條件下包含均勻顏色的基準條時才起作用。

我已經使用了幾款相機與OpenCV,最近一個佳能單反相機(7D)。

回答

1

我知道這有沒有關係,但同步,你嘗試過延長曝光時間?或者通過故意將兩個或更多圖像「混合」成一個?

2

我不認爲你提出的解決方案會奏效。 cvQueryFrame基本上從攝像頭驅動程序的緩衝區拷貝下一個可用幀(或根據驅動程序實現在存儲器映射區域中前進指針或blah)。

在任何情況下,cvQueryFrame呼叫的定時具有當圖像被捕獲沒有影響。

所以,如你所說,硬件同步真的是唯一的出路,除非你有特殊的攝像頭,像一個點灰色的攝像頭,它給你的框架整合開始觸發的明確的軟件控制。