Камера — Некоторые вопросы о Canon Edsdk 2.14API с переполнением стека

Я новый программист на C ++ с EDSDK 2.14. Я использую Canon EOS 5D Mark II, и у меня есть несколько вопросов (я запускаю API, сеанс камеры, обработчики, задаю емкость, моя программа делает фотографии, задаю правильные параметры для камеры и использую Windows сообщение для обработки некоторых событий):

1) Мне нужно сохранить фотографии на хост-компьютере, я делаю это правильно, но камера допускает только 8 фотографий во внутреннем буфере, и мне нужно протестировать некоторые комбинации параметров (AV, TV и ISO SPEED). Я делаю цикл, чтобы сделать 10 фотографий, когда я нажимаю ‘s’ (с сообщением Windows, обратным вызовом), и было сделано только 8 фотографий, другие имеют ошибку занятости, поэтому я предполагаю, что это внутренний буфер. Как я могу сделать более 8 фотографий, изменив параметры правильно с одним событием Windows?
PS: я попытался повторно открыть (снова закрыть и открыть сеанс с камерой), но это не было хорошей идеей, потому что дескриптор события передачи (загрузка изображения) был установлен только с выпуском объекта.

2) Я попытался получить одну фотографию и загрузить ее, но это оказалось невозможным, когда я нажимал «s», программа ждала, чтобы сделать 8 фотографий, и после этого камера отправляла обратный вызов события на ручку для загрузки всех изображений. Я хочу нажать «s», и программа сделает одну фотографию, загрузит и сделает другие, если это возможно, как я могу это сделать?

3) Если я выберу способ настройки параметров AV, TV, ISO Speed, он будет отправлен на камеру вовремя, чтобы сделать снимок, или мне нужно подождать что-то вроде обратного вызова камеры. Если мне нужно что-то подобное, какое событие мне нужно использовать?
PS: моя программа все асинхронная, я не использую потоки, только обратные вызовы и событие Windows.

4) Я ищу в интернете правильную направленность, но некоторые люди говорят, что это возможно только в режиме реального времени, и я не могу использовать это в своем приложении. Можно изменить фокус без просмотра в реальном времени?
PS: потому что мне нужна хорошая фотография и автофокус камеры с моей программой, я не делаю изображения такого же качества, как EOS Utility, и я думаю, есть ли у них pos-обработка в снятом изображении или нет

Если у меня есть еще вопросы или я решил их, я отвечу всему сообществу, потому что слишком много парней используют этот API, и он не слишком тривиален. Извините за мой английский, я не являюсь родным в этом языке, но я стараюсь изо всех сил.

0

Решение

объявление 1) вам нужно скачать изображение до переполнения внутреннего буфера камеры, как вы пытаетесь в 2

объявление 2) убедитесь, что ваша программа, после отправки команд первого выстрела, каким-то образом возвращается в «глобальный» цикл событий. Это должно дать EDSDK возможность обрабатывать события камеры и отправлять события «доступны для загрузки» на ваши обратные вызовы. Возьми это оттуда

объявление 3) нет гарантий, применяются ли эти события, вы бы предпочли прикрепить к событию изменения свойства (kEdsPropertyEvent_PropertyChanged) или опрос через некоторое время после

объявление 4) вы можете использовать Liveview и объектив на основе AF. Для последнего, исследовать kEdsCameraCommand_ShutterButton_Halfway

Хотите поделиться целью вашего проекта?

0

Другие решения


По вопросам рекламы [email protected]