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.
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
Birkaç web kamerası için bunu nasıl yapabilirim? Tüm pencereleri, – user1651460
, Linux için seçenek miydi? –