2009-11-11 29 views
12

Web kamerası kullanarak bilgisayar görüşünü yapmaya çalışıyorum (model Hercules Dualpix'dir). Kullanılacak ideal kamera olmadığını biliyorum, ama burada başka seçeneğim yok.Web kamerasının otomatik odaklanma programı nasıl devre dışı bırakılır?

Sorun, otomatik odaklamanın kamerayı kalibre etmeyi zorlaştırması/imkansız hale getirmesidir. Otomatik odaklama özelliğini devre dışı bırakmanın bir yolu bilen var. Ya da birisinin bununla başa çıkmak için bir fikri varsa ve kamerayı otomatik odaklama ile kalibre edin.

cevap

10

Hercules kameraları UVC uyumludur, bu nedenle DirectShow Arayüzü IAMCameraControl ile çalışmalıdır. Odağı belirli bir değere ayarlayabilir ve otomatik olmasını istemediğinizi ayarlamak için bayrakları kullanabilirsiniz. Geçerli durumu yoklamak için IAMCameraControl::Get'u kullanabilirsiniz, çünkü tüm kameralar odağı kapatmayı desteklemez.

IAMCameraControl *pCameraControl; 
HRESULT hr; 
hr = pFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); 
if (hr == S_OK) { 
    long defaultFocusValue; 
    hr = pCameraControl->GetRange(CameraControl_Focus, 
           NULL, // min 
           NULL, // max 
           NULL, // minstep 
           &defaultFocusValue, // default 
           NULL); // capflags 
    hr = pCameraControl->Set(CameraControl_Focus, // property 
          defaultFocusValue, // value 
          CameraControl_Flags_Manual); 
} 

Odak ayrı ayrı kamera tarafından tanımlanan bir yelpazesine sahiptir, bu nedenle isterseniz, maks varsayılan değeri ve min bulmak için gösterilen bunu sorgulaması gerekir. Bu örnekte, pFilter, DirectShow'dan aldığınız giriş filtresinin bir işaretçisidir. enumerating the devices'dan edinebilir ve istediğinizi bulabilirsin.

+0

Teşekkürler. Tam olarak ne istedim! İlk önce işe yaramadı, ama kamera sürücüsünü ve firmware'i yükselttim ve her şey çalışıyor. – jslap

+0

Birkaç web kamerası için bunu nasıl yapabilirim? Tüm pencereleri, – user1651460

+1

, Linux için seçenek miydi? –

0

ayarlamak için kullanılabilir ve Python yapabileceğiniz nerede Bu çok kolay:

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

Ben OpenCV kullanmak 3.1.0-dev, Python 2.7.5 ve Logitech HD Pro Webcam C920

+0

Ancak bu, çoklu pozlama ile görüntüleri yakalamak için çalışmaz. – Abc

İlgili konular