Для увеличения точности определения координат черно-белого маркера использую полутона на границах.
Камера Logitech c910. Драйвера Logitech пытаются играть с FPS для получения лучшего качества, использую MS драйвера.
Результаты:
MEDIASUBTYPE_RGB24 — 640*480, 30 fps, получается выставить диапазон от 0,0,0 до 255,255,255. Рваный градиент на наклонных границах маркера, нет плавных переходов — ошибки микропрограммы c910
MEDIASUBTYPE_RGB8 — 1280*720, 10 fps (хотя полоса USB2 позволяет 30), градиент ровный, но диапазон от 15-21 до 225-230 (это значения через один пиксел, видимо микропрограмма c910 преобразует формат камеры RGB24 сначала в YUY2, а потом в RGB8, теряя при этом границы диапазона)
Что еще можно попробовать?
Внутренности камеры:
сама камера — sz102711, s1324
контроллер — 334-000066, 1023, m101y18
флеш ? — 49a025
Встречал на форумах, что в c910 используется 5 MP камера, так ли это?
Самое хорошее написать свою прошивку для c910, но как это сделать?
Возможно ли создание своих прошивок для других камер?
Возможно ли использовать что-то типа Canon SDK для выполнения своего алгоритма на скорости 50-60 fps и передачи наружу только результатов?
Аналогичные задачи решаются с помощью специализированых камер. Там и скорости выше и производитель гарантирует SDK, обновлённые драйвера.
Посмотрите в сторону ids-ueye, basler и т.п.. Там есть высокоскоростные камеры, есть камеры с высоким разрешением.
Здравствуйте, yuri_d, Вы писали:
_>Здравствуйте, VSlava
_>Спасибо. Заказчик хочет начать малыми средствами, а там как пойдет
Так труд программиста надо учитывать в подсчёте средств. Вы там прошивку камеры менять собрались.
Ещё полезный момент — поддержка интерфейсов и числа камер. Упомянутые камеры работают через USB 2.0/Gigabit Ethernet/USB 3.0 при универсальных SDK.
И если речь идёт о распознавании движения важна аппаратная синхронизация камер.
Спасибо.
Конечно, лучше работать с хорощим железом и драйверами, но для этого нужны какие-то результаты.
На первом этапе остановился на 3*Logitech_c910 640*480 30 fps. Для синхронизации времени интерполирую по SampleTime каждой камеры из ISampleGrabberCB::SampleCB( double SampleTime, IMediaSample * pSample ). По полученным резудьтатам уже понятно, что 640*480 и 30 fps для рабочего продукта мало.