2012-11-12 27 views
4

我正在使用上面提到的兩個OpenCV函數從我的攝像頭中檢索幀。沒有額外的屬性設置,只是使用默認參數運行。cvCaptureFromCAM()/ cvQueryFrame():禁用自動圖像校正?

在讀取循環中的幀時,我可以看到圖像發生變化,亮度和對比度似乎會自動調整。它絕對是一個OpenCV的操作,因爲攝像頭捕獲的圖像不會被改變並且不斷點亮。

那麼如何禁用這種自動更正?我找不到能夠完成這項工作的財產。

回答

0

爲了回答我自己的問題:OpenCV很麻煩或者過時了。

  • 它似乎不可能在攝像機的原始分辨率獲取圖像,他們總是640x480;也強制它通過設置寬度和高度屬性不會改變任何東西
  • 它似乎不可能禁用自動圖像校正,上述性能似乎不起作用
  • 亮度/對比度屬性doesn' t似乎也工作 - 或者至少我找不到任何好的值,或者自動圖像校正總是覆蓋它們

總結:我不推薦使用OpenCV進行更多增強圖像捕捉。

3

你應該嘗試玩弄這三個參數:

圖像(僅適用於攝像機)的CV_CAP_PROP_BRIGHTNESS亮度的圖像 CV_CAP_PROP_CONTRAST對比度(僅適用於攝像機)的圖像 CV_CAP_PROP_SATURATION飽和度(僅對於相機)

嘗試將它們全部設置爲50.此外(如果它不會幫助)嘗試更改另一個攝像頭捕獲參數從documentation

+0

這引發了另一個問題,我從來沒有找到一個解決方案:什麼是這些值的有效範圍? 0..100? – Elmi

+0

從opencv源碼(linux)我發現默認的範圍值是[0..255]。但是在設置參數之前,他們從攝像頭驅動程序獲得這個範圍 - 所以它取決於您的環境。你嘗試過哪些參數? – ArtemStorozhuk

+0

我試圖爲這些屬性設置50,5和1 - 但都導致了太明亮的圖像,完全無法使用。所以我決定讓相機進行自動校正,然後執行我自己的亮度/飽和度/伽瑪/ RGB校正。與CV_CAP_PROP_FRAME_WIDTH/_HEIGHT同樣的情況,我設置了1280x960相機的原始分辨率,但仍然只能獲得640x480的圖像。所以這似乎並不像預期的那樣至少在v4l中起作用。 – Elmi