2012-02-08 95 views
8

我正在使用視頻輸入庫從網絡攝像頭獲取幀。我想用C代碼設置本相機的FOCUS。禁用視頻輸入庫或OpenCV中的自動對焦

相機有AUTO FOCUS啓用。沒有辦法去禁用自動對焦並設置特定的對焦值

問候, 薩利赫...

+0

我知道我可以使用下面的代碼在視頻輸入庫設置焦點; (int deviceID,long property,long lValue,long Flags = NULL,bool useDefaultValue = false); 但它不工作。 – Saleh 2012-02-08 10:34:45

+0

答案可能取決於平臺。你使用什麼操作系統/硬件? – 2012-02-08 15:31:56

+1

窗戶...你可以考慮任何這些:7 64/32或Windows XP 32 ... – Saleh 2012-02-09 08:29:29

回答

2

你有沒有試過這樣:https://stackoverflow.com/a/1718009/7531它要求你使用的DirectShow,但是這應該是可能的。你是否看過OpenCV documentation for CameraCapture。有關相機參數的部分顯示瞭如何 - 一般來說,您可以控制相機參數,快速查看videoinput.h應該會顯示自動對焦的參數。這樣設置自動對焦的 This is a complete example

IAMCameraControl是用於控制參數的窗口界面。

請注意,根據您使用的網絡攝像頭和/或特定的固件版本,可能根本無法控制聚焦/自動對焦。

+0

哦是的。我可以使用VideoInput Library中的鼠標光標通過設置窗口禁用它。這意味着相機驅動程序支持啓用禁用自動對焦功能。但問題是它不能通過編碼進行配置。您已經提到了OpenCV的攝像頭捕獲實現。在這個實現中沒有屬性(焦點,縮放,亮度等)正在工作。 :( – Saleh 2012-02-10 12:36:01

+0

@ saleh - 你是如何解決你的問題的? – user1651460 2013-01-30 07:15:12

+0

@Saleh,請說明你是如何解決問題的。謝謝 – Abc 2017-09-04 12:10:42

2

我已經搜索了幾天的這些問題,並嘗試videoinput庫和directshow。 如果你只是想設置相機參數一次(手動)內的OpenCV,我發現最簡單的方法是:

VideoCapture cap(0); 
cap.set(CV_CAP_PROP_SETTINGS, 1); 

它會彈出一個窗口,供您設置的參數。足以禁用自動對焦。

這種方法的不便之處在於,如果你想通過程序控制焦距,它不能這樣做。

1

您正在查找的功能是相機和驅動程序特定的。 The OpenCV camera property controls只提供非常基本的參數。
沒有通過OpenCV進行通話的通用方法。

要做到這一點,而不是通過OpenCV的,你可以做做下列操作之一:通過OS /驅動器特定的API cap.set(CV_CAP_PROP_SETTINGS, 1);

  • 編程方式,爲@jillesdewit suggests

  • 7

    如果您使用OpenCV的3.1.0-dev的版本和Python 2.7.5,剪斷會幫助你將下面的代碼;)

    cap = cv2.VideoCapture(1) # my webcam 
    cap.set(3, 1280) # set the resolution 
    cap.set(4, 720) 
    cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # turn the autofocus off 
    

    隨着我的羅技高清專業攝像頭C920是工作正常。 cv2中還有許多其他的酷炫控制功能,如cv2.CAP_PROP_BRITHNESScv2.CAP_PROP_CONTRAST。 看看自動完成顯示你什麼;)