Как получить изображения с камер GigE в Linux с помощью Plain C

Есть ли библиотека, которую я могу использовать для получения изображений с камеры GigE с простым C в Linux? Если быть более точным, у меня установлена ​​камера Basler GigE и установлено программное обеспечение пилона. Существует также пример кода на C++. Но я хочу и должен использовать C (в моей работе это на самом деле правильно, чтобы использовать C). Было бы здорово, если бы для GigE было что-то полезное, например libdc1394.

3 ответа

"GigE Vision" на самом деле является стандартом для камер компьютерного зрения, и большинство камер также используют стандарт Genicam для настройки параметров. По крайней мере, такова теория - у меня есть высокоскоростная камера GigE, которую Pylon или AVT не обнаружили по неизвестной причине (официально она поддерживается только eBus из Pleora). Возможно, вы сможете получить спецификации для этих стандартов, но я не уверен, что они свободно доступны.

Что касается библиотеки, я только что попробовал Aravis под Ubuntu12.04, и она работала для моей камеры (потоковая передача 512x512 пикселей при 190 кадрах в секунду). Это написано на C, насколько я могу судить. Как подсказка, чтобы скомпилировать включенный Viewer, вы должны установить все пакеты gstreamer-dev, включая libgstreamer-plugins-base0.10-dev.

В большинстве реализаций будет использоваться C++, и в лучшем случае они будут основаны на построении c-api, поскольку GenICam - очень сложная для реализации вещь, а эталонная реализация работает, является бесплатной и используется почти всеми поставщиками SDK. Вы можете реализовать большую часть приобретения без особых усилий в C, но очень трудно исключить GenICam из цикла - это потому, что производители использовали документы GenICam XML как своего рода язык / среду программирования, специфичные для предметной области - усилия сопоставимы с реализация веб-браузера с нуля.

Aravis действительно существует, но зависит от gstreamer и, по-видимому, в основном на C, но он пойдет только на сложную поддержку XML, необходимую для многих камер. Я бы никогда не использовал gstreamer в критически важных условиях или в тех случаях, когда требуется надежная работа в дополнение к высокой производительности или высокой эффективности. Я считаю, что лучшим вариантом на рынке является SDK FYI от Pleora - никакого отношения. Сказав это - я написал такую ​​библиотеку (с C++:-), которой я не могу поделиться для решения упомянутых проблем.

Стандарт GigE не очень удобен для открытого исходного кода - вы должны платить ежегодную лицензионную плату организации по стандартизации, поэтому большая часть программного обеспечения, использующего GigE Vision, стоит значительных денег. Группа компаний собралась вместе, чтобы разработать стандарт, и вряд ли они опубликуют его в ближайшее время.

Итак, вот некоторые из ваших вариантов (о которых я могу думать)...

1) Обратный инжиниринг протокола самостоятельно. Это довольно сложно, так что это будет большой проект.

2) Может быть, вам повезет и вы найдете компанию, у которой есть C-версия SDK, которую они могут продать вам?

3) Используйте C++:-) (jk...)

4) Оплатите организацию по стандартизации, чтобы предоставить вам доступ или партнер с компанией, которая в ней работает.

5) Используйте проекты с открытым исходным кодом, которые пытаются пересмотреть стандарт. (Я не знаю, каковы правила законности на этом). Примеры: Aravis и OpenGigEVision. Эти решения, вероятно, будут неполными некоторое время, но они должны, по крайней мере, поддерживать основы.

Я думаю, что № 5 - ваш лучший выбор, если у вас нет времени и денег.

Другие вопросы по тегам