Получение снимков с цифровой зеркальной камеры (nikon) из программного кода на c#

Получение снимков с цифровой зеркальной камеры (nikon) из программного кода на c#

Здравствуйте.Столкнулся я с задачей получения фотографий с фото камерыв моей программе на c#, причем нужно было так, дабы пользователь надавил кнопку в программе, либо произошло какое-то программное событие, и мы ррррраз и взяли снимок скамерыв программу и дальше его как-нибудь обработали/сохранили/послали, в общем сделали с ним что-нибудь программным же образом.
Смотрите кроме этого: Nikon D700 представят на Photokina 2014

Узнаваемый производитель фототехники компания Nikon, подготавливается к презентации новой зеркальной камеры, которая может показаться на рынке в самое ближайшее время. Предположительно, Nikon анонсирует новинку незадолго до начала профильной выставки Photokina 2014, которая пройдет с 16 по 21 сентября в Кёльне, Германия. Предположительно, камера возьмёт 24-мегапиксельный CMOS-сенсор, современный процессор Expeed 4, встроенный модуль беспроводной связи Wi-Fi, LCD-дисплей с поворотным механизмом, и продвинутые возможность и функции шумоподавления скоростной серийной съемки.

Как выяснилось, у производителей цифровых зеркальных фотокамер имеется особый SDK, через что возможно программным методом к данной самой камере обратиться и поуправлять ею. У меня камера Nikon D5200, не смотря на то, что для Сони и Canon помой-му также видел подобный SDK.Цель статьи поведать о возможности и продемонстрировать маленький пример.

Как мы знаем, если вы понимаете что что-то возможно сделать, то выяснить, как это сделать – пара пустяков.Итак, что нам пригодиться:Во-первых, вам необходимо скачать сам SDK с сайта Никона: sdk.nikonimaging.com/apply/Вам нужно будет пройти стать и регистрацию почетным разработчиком Никона, причем при регистрации необходимо применять почтовый ящик организации, общедоступные коробки в том месте не прокатывают. В том месте же возможно заметить перечень поддерживаемых камер, к сожалению недорогие мыльницы не поддерживаются.Во-вторых, для простоты, советую воспользоваться уже написанным NikonCSWrapper’ом: sourceforge.net/p/nikoncswrapper/wiki/Home/Потом создаете собственный проект (в Visual Studio), подключаете ссылку на никоновский враппер, и, внимание: копируете в директорию с бинарниками файлы: NkdPTP.dll и Type0009.md3 (вот тут цифры смогут различаться в зависимости от камеры), каковые возможно найти в скачанном SDK.Сейчас маленький пример о том, как фотографировать:Сперва определяем менеджер устройств:NikonManager manager = new NikonManager(Type0009.md3);После этого привязываем к менеджеру обработчик события добавления устройства:manager.DeviceAdded += manager_DeviceAdded;в коде обработчика у меня вот таковой текст:void manager_DeviceAdded(NikonManager sender, NikonDevice device) { _device = device; this.Text = _device.Name; _device.ImageReady += _device_ImageReady; }Тут я сохраняю ссылку на новое устройство и привязываю обработчик к событию ImageReady, которое будет срабатывать в то время, когда камера фотографирует, причем событие вызывается, и в то время, когда вы из программы руководите сфотографировать, и в то время, когда вы на самой камере жмете кнопку.Обработчик события фотографирования у меня выглядит так:void _device_ImageReady(NikonDevice sender, NikonImage image) { MemoryStream ms = new MemoryStream(image.Buffer); Image img = Image.FromStream(ms); ms.Close(); pictureBox1.Image = img; } Тут я доступ к буферу, в котором сидит фотография и через MemoryStream загружаю ее в Image, что позже отправляю в pictureBox, дабы вывести ее на форме. Как вы понимаете, с Image по большому счету возможно делать все что угодно, мой код – лишь для примера.Дабы сфоткать камерой из кода программы, необходимо привести к методу Capture():_device.Capture();Ну и при выходе из программы в обязательном порядке необходимо закрыть менеджер устройств, в противном случае позже не подключитесь к нему, пока не перезагрузите компьютер:manager.Shutdown();По большому счету, через SDK возможно делать множество вещей с вашей камерой: приобретать и устанавливать каждые(?) параметры камеры, фотографировать, снимать видео, фокусировать машинально и вручную (из программы), приобретать живое видео с видоискателя.На этом у меня все, надеюсь, кому-нибудь эта информация понадобиться, Благодарю за внимание.

Случайная статья:

Панорамный снимок


Похожие статьи:

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.