2012-02-08 16 views
8

Sto utilizzando la libreria di input video per ottenere frame da una webcam. Voglio impostare FOCUS di questa fotocamera nel codice C.Disabilita la messa a fuoco automatica nella Libreria di input video o OpenCV

La fotocamera dispone di AUTO FOCUS attivato. Non c'è un modo per disabilitare l'autofocus e impostare un valore di messa a fuoco specifico.

saluti, Saleh ...

+0

So che posso mettere a fuoco in Libreria di input video usando il seguente codice; setVideoSettingCamera (int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); Ma non funziona. – Saleh

+0

La risposta potrebbe dipendere dalla piattaforma. Quale sistema operativo/hardware stai usando? –

+1

windows ... puoi considerare uno di questi: 7 64/32 o windows xp 32 ... – Saleh

risposta

2

Hai provato questo: https://stackoverflow.com/a/1718009/7531 Richiede si utilizza DirectShow, ma questo dovrebbe essere possibile.

Altrimenti, hai guardato il OpenCV documentation for CameraCapture. la sezione relativa ai parametri della telecamera mostra come - in generale - si controllano i parametri della telecamera, una rapida occhiata in videoinput.h dovrebbe mostrare i parametri per la messa a fuoco automatica. This is a complete example di impostazione dell'autofocus in questo modo.

IAMCameraControl è l'interfaccia di Windows per il controllo dei parametri.

Si noti che a seconda della webcam utilizzata e/o della versione specifica del firmware potrebbe non essere possibile controllare la messa a fuoco/messa a fuoco automatica.

+0

oh sì. Posso disabilitarlo tramite le finestre delle impostazioni usando il cursore del mouse in Libreria VideoInput. Significa che i driver di fotocamera hanno il supporto per abilitare n disabilitare AutoFocus. ma il problema è che non è configurabile tramite la codifica. Hai menzionato l'implementazione di OpenCV per l'acquisizione della videocamera. In questa implementazione nessuna proprietà (Focus, Zoom, Luminosità ecc.) Funziona. :( – Saleh

+0

@ saleh - Come hai risolto il problema? – user1651460

+0

@Saleh, per favore menziona come risolvi il problema. Grazie – Abc

2

Ho cercato questo problema per coppie di giorni e ho provato la libreria di videoinput e directshow. Se si desidera solo per impostare i parametri della fotocamera per una volta (manualmente) all'interno OpenCV, il modo più semplice che ho trovato è:

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

si aprirà una finestra che consente di impostare i parametri. abbastanza per disabilitare l'autofocus.

L'inconveniente di questo metodo è che se si desidera controllare la lunghezza focale per programma, non è possibile farlo.

1

La funzionalità che stai cercando è specifica per telecamera e driver. The OpenCV camera property controls fornisce solo parametri molto rudimentali.
Non esiste un modo generico per effettuare quella chiamata tramite OpenCV.

Per farlo, non attraverso OpenCV, si può fare eseguire una delle seguenti operazioni:

  • accedere manualmente le proprietà di cattura del driver procedendo come @user3211236 suggests: cap.set(CV_CAP_PROP_SETTINGS, 1);
  • Programatically, tramite API specifiche di OS/driver come @jillesdewit suggests .
7

Se si utilizza la versione 3.1.0 OpenCV-dev e Python 2.7.5, il seguente codice snipped dovrebbe aiutare;)

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 

Con il mio Logitech HD Webcam Pro C920 è funziona bene. Ci sono molte altre fantastiche funzioni di controllo all'interno di cv2, come cv2.CAP_PROP_BRITHNESS o cv2.CAP_PROP_CONTRAST. Scopri cosa ti mostra il completamento automatico;)

Problemi correlati