2013-08-08 3 views
2

Я использую библиотеку EMGU CV в своем приложении. Как я могу вручную настроить фокусировку камеры на объект? Теперь я использую класс Capture для захвата изображений.Камера с фокусом в EMGU CV

ответ

6

Я нашел решение, используя DirectShow. Интерфейсом IAMCameraControl я могу управлять экспозицией и фокусировкой камеры. Образец образца:

DsDevice[] devs = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); // getting video devices 
IFilterGraph2 graphBuilder = new FilterGraph() as IFilterGraph2; 
IBaseFilter capFilter = null; 
if (graphBuilder != null) 
graphBuilder.AddSourceFilterForMoniker(devs[0].Mon, null, devs[0].Name, 
    out capFilter); //getting capture filter for converting it into IAMCameraControl 
IAMCameraControl _camera = capFilter as IAMCameraControl; 
_camera.Set(CameraControlProperty.Focus, 250, CameraControlFlags.Manual); //Setting focus to macro (in my camera, range between 0 - 250) 
+0

Учитывая, что это использует DirectShow.NET, означает ли это, что теоретически это должно применяться в равной степени к веб-камерам Logitech и Microsoft (в частности, Microsoft LifeCam Studio)? У нас уже есть Logitech C920, и мы сталкиваемся с той же проблемой. Надеемся, что ваше решение работает даже с .NET 4.5.2 на Windows 8.1 64-bit. – Kal

1

EmguCV по существу является OpenCV для C#, это просто библиотека обработки изображений. Класс Camera полезен только для захвата изображений, а не для контроля параметров камеры (это можно увидеть в Emgu's documentation). На практике существует множество различных типов камер с различными методами управления. Собственно, из вашего вопроса я не могу заключить, с какой камеры вы работаете: веб-камера, CCTV или фотография DSLR?

Общий подход, который вы можете предпринять: используйте EmguCV для определения того, находится ли камера в фокусе или вне ее, используя contrast detection и соответствующим образом управляйте камерой. С веб-камерами они, как правило, имеют встроенную автофокусом, с другими типами камер, проконсультируются с их документацией.

+0

Я пользуюсь веб-камерой Logitech C920 PRO. И я могу контролировать некоторые параметры камеры, такие как экспозиция или насыщенность методом Capture.SetCaptureProperty. Камера имеет автофокус, но мне нужен кадр, в котором объект не находится в фокусе. – SulNR