2017-08-16 1817 views
3

在我的機器人視覺項目中,我需要檢測運動物體的標記,但運動會導致圖像中出現模糊效果。解卷積方法非常緩慢。所以我正在考慮使用更高的fps相機。有人說我不需要更高的fps,相反我需要更短的曝光時間。有沒有辦法使用Python和OpenCV來調整攝像頭的快門速度或曝光時間

OpenCV的Python界面cv2提供了一種更改相機設置但不包括「曝光時間」或「快門速度」設置的方法。我也擔心攝像頭甚至不支持這種設置。

任何其他想法:

使用相機設置消除模糊效果?

恢復與實時性能的圖像?

OR

約低成本的攝像頭進行實時機器人應用任何建議?

+0

是哪個攝像頭? – 101

+0

Logitech C310 USB WebCam –

+0

你可以嘗試'cap = cv2.VideoCapture(0);打印cap.get(cv2.cv.CV_CAP_PROP_EXPOSURE)'。 – 101

回答

3

有一種方法可以改變OpenCV中可用於設置輸入圖像曝光的VideoCapture對象的屬性。

cap = cv2.VideoCapture(0) 
cap.set(cv2.CAP_PROP_EXPOSURE, 40) 

但是這個參數並不是所有相機都支持的。每種相機類型都提供了不同的界面來設置其參數。 OpenCV代碼中有很多分支可以支持其中的許多分支,但當然並不涵蓋所有可能性。

我的相機也是如此。所以我必須找到一個不同的解決方案。這是從命令行終端使用v4l2_ctl實用程序。

v4l2-ctl -d /dev/video0 -c exposure_absolute=40 

但是,這隻保留了當前視頻會話的價值。這意味着您必須先開始視頻預覽,然後設置此屬性。一旦釋放視頻捕捉,曝光值將恢復爲默認值。

我想在我的python腳本中控制曝光,所以我用subprocess模塊來運行linux bash命令。例如

import subprocess 
subprocess.check_call("v4l2-ctl -d /dev/video0 -c exposure_absolute=40",shell=True) 
+1

哇。我不知道有多少種'opencv python exposure webcam'或者類似的搜索詞,但是我自己做了這個3小時後才發現!作爲參考[這裏](https://gist.github.com/jwhendy/12bf558011fe5ff58bd5849954e84af4)的一個要點,顯示了一種方式來做這些。我是'python'的新手,但我認爲dict方法對於通過很多設置進行循環是合理的? – Hendy

+0

感謝分享@ Hendy ...這是設置攝像機多種屬性的好方法。 –

相關問題