Как я могу захватить кадры с Bodelin ProScope HR с помощью AVCaptureSession в Mac OS X Lion?

Я пытаюсь захватить кадры и просмотреть видео с USB-микроскопа Bodelin Proscope HR. У меня есть простое приложение Cocoa, использующее AVCaptureSession с AVCaptureDeviceInput для Proscope HR и AVCaptureVideoPreviewLayer для отображения вывода.

Все это отлично работает со встроенной камерой iSight, но вывод Proscope HR искажен до неузнаваемости.

Используя прилагаемое программное обеспечение Proscope, я иногда вижу те же искажения при попытке использовать более высокие разрешения. Я подозреваю, что используемое аппаратное обеспечение довольно слабое, и это подкрепляется тем фактом, что при самом низком разрешении 320x200 прилагаемое программное обеспечение работает со скоростью 30 кадров в секунду, но когда вы увеличиваете разрешение, частота кадров резко падает, вплоть до 15 кадров в секунду при разрешении 640x480, вплоть до 3,75 кадров в секунду при максимальном разрешении 1600x1200.

РЕДАКТИРОВАТЬ: я изначально думал, что, возможно, частота кадров, которую пытается использовать AVCaptureSession, слишком высока, но с тех пор я подтвердил, что (по крайней мере, теоретически) сеанс захвата запрашивает частоту кадров, объявленную AVCaptureDevice.

Я должен отметить, что я уже испробовал все стандартные AVCaptureSessionPreset* предустановки констант, определенные в заголовках, и ни один из них не улучшил результаты Proscope HR. (Однако они, похоже, повлияли на встроенный iSight примерно ожидаемым образом.)

Вот снимок экрана, показывающий искаженный вывод ProScope HR:

ProScope HR выход

И просто для сравнения вывод обычной веб-камеры:

Общий вывод веб-камеры


person Kaelin Colclasure    schedule 17.01.2012    source источник
comment
Не могли бы вы прикрепить короткое видео, демонстрирующее проблему?   -  person Kentzo    schedule 19.01.2012


Ответы (1)


Согласно документация следует настроить AVCaptureDevice, а не AVCaptureSession.

РЕДАКТИРОВАТЬ: Платформа AV разработана на основе IOKit и полностью зависит от того факта, что у вас нет проблем с оборудованием. В вашем случае похоже, что корень вашей проблемы связан с оборудованием, поэтому вам следует рассмотреть возможность использования IOKit напрямую.

person Kentzo    schedule 19.01.2012
comment
С помощью отладчика я подтвердил, что возможности AVCaptureDevice автоматически используются AVCaptureSession… Так что я ошибся, подозревая, что частота кадров плохая. Есть и другая проблема, по-видимому, уникальная для ProScope HR. - person Kaelin Colclasure; 20.01.2012
comment
Итак, вы пытались присвоить разные значения свойству activeVideoMinFrameDuration объекта AVCaptureDevice? - person Kentzo; 20.01.2012
comment
Я сделал это, но устройство ProScope HR по-прежнему не выдавало каких-либо пригодных для использования результатов. Я подозреваю, что есть что-то несовместимое с оборудованием Bodelin, несмотря на то, что они рекламируют его как не требующее специальных драйверов для MacOS X. - person Kaelin Colclasure; 21.01.2012
comment
Тогда вам следует подумать об использовании IOKit напрямую, а не об использовании AV-фреймворка. - person Kentzo; 21.01.2012