1

Моя конечная цель - обнаружение лица/объекта и общее приложение обработки изображений на Altera DE2 FPGA. Я использую Catapult C для программирования FPGA (поэтому я использую C-код, а не Verilog или VHDL).Могу ли я использовать библиотеки openCV с Catapult C?

Мой вопрос: если Catapult C поддерживает библиотеки openCV и любые подсказки/ссылки о том, как установить библиотеки, чтобы они запускались в Catapult. Есть ли особые соображения? Искал как Google, так и stackoverflow, но пока не повезло. Спасибо.

ответ

1

Я бы даже не попытался скомпилировать исходный код OpenCV для цели выполнения FPGA. Слишком много зависимостей библиотек и предположений, ориентированных на микропроцессорную архитектуру, в OpenCV (или в любой крупной целевой базе микропроцессоров).

В любой системе есть библиотеки времени компиляции и времени выполнения. Для одного примера, если мы посмотрим на библиотеки зависимости от времени выполнения в OpenCV общей библиотеки, есть много библиотек Микропроцессора кода сам OpenCV использует:

[email protected]:~$ ldd /usr/lib/libcv.so 
linux-vdso.so.1 => (0x00007fff1c1ff000) 
libcxcore.so.4 => /usr/lib/libcxcore.so.4 (0x00007f03279f7000) 
libavformat.so.52 => /usr/lib/libavformat.so.52 (0x00007f0327701000) 
libavcodec.so.52 => /usr/lib/libavcodec.so.52 (0x00007f0326ca7000) 
librt.so.1 => /lib/librt.so.1 (0x00007f0326a9f000) 
libz.so.1 => /lib/libz.so.1 (0x00007f0326888000) 
libdl.so.2 => /lib/libdl.so.2 (0x00007f0326683000) 
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f032636f000) 
libm.so.6 => /lib/libm.so.6 (0x00007f03260ec000) 
libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00007f0325edd000) 
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f0325cc0000) 
libc.so.6 => /lib/libc.so.6 (0x00007f032593a000) 
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f0325722000) 
libavutil.so.49 => /usr/lib/libavutil.so.49 (0x00007f0325513000) 
libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x00007f0325302000) 
libgsm.so.1 => /usr/lib/libgsm.so.1 (0x00007f03250f3000) 
libschroedinger-1.0.so.0 => /usr/lib/libschroedinger-1.0.so.0 (0x00007f0324e74000) 
libspeex.so.1 => /usr/lib/libspeex.so.1 (0x00007f0324c5a000) 
libtheora.so.0 => /usr/lib/libtheora.so.0 (0x00007f0324a0b000) 
libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00007f0324630000) 
libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f0324403000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f03282f1000) 
liboil-0.3.so.0 => /usr/lib/liboil-0.3.so.0 (0x00007f0324172000) 
libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f0323f6b000) 
[email protected]:~$ 

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

Это огромная задача - вам придется скомпилировать все библиотеки, которые использует OpenCV, все библиотеки, необходимые этим библиотекам, самому OpenCV и вашему приложению верхнего уровня. О, и напишите среду выполнения для вашей FPGA-системы. Даже если вы могли бы скомпилировать все это, это не поместилось бы в ресурсы FPGA.

С другой стороны, вы можете написать код C верхнего уровня и любой требуемый код обработки изображений C и скомпилировать его для FPGA-системы. Исходный код OpenCV является выдающимся справочным инструментом для реализации различных алгоритмов обработки изображений для целей FPGA.

+0

Я вижу, спасибо. Однако я действительно не получил часть «Извлечение ... разумной цели». Это означает, что я сначала скомпилирован на компьютере, а затем настроил свои алгоритмы для FPGA? – Chris

+0

@Chris - Я имею в виду, что вам нужно написать код обработки изображений, а не просто перекомпилировать весь код OpenCV C. Я пересмотрел свой ответ, чтобы описать сложность и масштаб того, что, по вашему мнению, вы предлагаете. –

+0

Теперь это более понятно, еще раз спасибо за дополнительную информацию. Я буду придерживаться простого кода C. – Chris