Come impostare la messa a fuoco di una webcam o di qualsiasi altra telecamera usando OpenCV
Camere web a fuoco fisso
La maggior parte (leggi economico) delle webcam sono sistemi di imaging a fuoco fisso dove non abbiamo nessun componente ottico da cambiare (lenti, apertura) ecc. La distanza focale standard per i produttori di webcam a fuoco fisso è di circa 1,5 metri dalla telecamera. Questo valore assicura che una distanza abbastanza grande rientri in una messa a fuoco accettabile.
Figura 1: abbastanza vicino alla mia webcam. Il testo è leggibile.
Figura 2: Un po' più indietro (per favore ignorate il riflesso luminoso, la mia finestra è proprio di fronte a me - lo so, lo so... ho bisogno di tende).
Nota come nella figura 1, la mia faccia e il testo sulla mia bottiglia di deodorante sono all'interno di una gamma accettabile di chiarezza (per chiarezza, intendo che è leggibile e ragionevolmente nitida) anche se sono a distanze diverse. Questo ci mostra che anche se "aggiustiamo" la lunghezza focale di una webcam, possiamo ancora ottenere immagini ragionevolmente chiare - un concetto che si trova nella maggior parte delle webcam.
Come si può vedere dalla figura 2, il testo ora è difficilmente leggibile. Quindi, dovreste piuttosto preoccuparvi della densità di pixel e della risoluzione (in una webcam) prima di preoccuparvi della messa a fuoco inappropriata, perché questa sarà il fattore limitante.
OpenCV fornisce accesso a quasi tutti gli aspetti di una webcam. Controlla questo link per una descrizione dettagliata:
cv::VideoCapture Class Reference
Te la incollo:
- CAP_PROP_POS_MSEC Posizione corrente del file video in millisecondi o timestamp della cattura video.
- CAP_PROP_POS_FRAMES Indice basato su 0 del fotogramma da decodificare/catturare successivamente.
- CAP_PROP_POS_AVI_RATIO Posizione relativa del file video: 0 - inizio del filmato, 1 - fine del filmato.
- CAP_PROP_FRAME_WIDTH Larghezza dei frame nel flusso video.
- CAP_PROP_FRAME_HEIGHT Altezza dei frame nel flusso video.
- CAP_PROP_FPS Frame rate.
- CAP_PROP_FOURCC Codice a 4 caratteri del codec.
- CAP_PROP_FRAME_COUNT Numero di frame nel file video.
- CAP_PROP_FORMAT Formato degli oggetti Mat restituiti da retrieve().
- CAP_PROP_MODE Valore specifico del backend che indica la modalità di cattura corrente.
- CAP_PROP_BRIGHTNESS Luminosità dell'immagine (solo per telecamere).
- CAP_PROP_CONTRAST Contrasto dell'immagine (solo per telecamere).
- CAP_PROP_SATURATION Saturation of the image (only for cameras).
- CAP_PROP_HUE Hue of the image (only for cameras).
- CAP_PROP_GAIN Gain of the image (only for cameras).
- CAP_PROP_EXPOSURE Exposure (only for cameras).
- CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
- CAP_PROP_WHITE_BALANCE Currently not supported
- CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
Autofocus webcams
These webcams have a tiny motor which change the aperture and pixel gain to get the best possible focus. IF your webcam supports autofocus, then you will observe another “focus” parameter which can be accessed like this:
- cap = cv2.VideoCapture(1) # Generate camera object
- cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # turn the autofocus off
- cap.set(3, 1280) # set the Horizontal resolution
- cap.set(4, 720) # Set the Vertical resolution
Careful though, some webcam manufacturers don’t let you change webcam focussing parameters and it’s best to do a thorough search before purchasing the a webcam.
Manual focus in a DSLR camera
This section is out of scope for this question but the best way to start is by using 3rd party software like:
DigiCamControl
Easy to use, free solution for complex camera control
It’s awesome!
Articoli simili
- È possibile progettare un jammer che può fermare una telecamera (telecamera spia, telecamera CCTV, ecc) dalla registrazione?
- La differenza tra 9 e 45 punti di messa a fuoco (Canon 800d Vs. Canon 200d) fa una grande differenza nelle DSLR?
- Come rilevare un'immagine ruotata e rimetterla nella posizione corretta usando Python/OpenCV
- Come abilitare la modalità di messa a fuoco su Android