1

최종 목표는 Altera DE2 FPGA의 얼굴/물체 감지 및 일반적인 이미지 프로세싱 어플리케이션입니다. Catapult C를 사용하여 FPGA를 프로그래밍하고 있습니다 (Verilog 또는 VHDL이 아닌 C 코드를 사용하고 있습니다).투석기 C에서 openCV 라이브러리를 사용할 수 있습니까?

제 질문은 Catapult C가 OpenCV 라이브러리를 지원하는지, 그리고 Catapult에서 실행되도록 라이브러리 설치 방법에 대한 힌트/링크가 있는지 질문합니다. 특별한 고려 사항이 있습니까? Google과 stackoverflow를 모두 검색했지만 운이 아직 없습니다. 감사합니다.

답변

1

나는 FPGA 실행 타겟을위한 OpenCV 소스 코드를 컴파일하려고 시도조차하지 않을 것이다. 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]:~$ 

컴파일 및 FPGA 시스템을 OpenCV를 사용하고자하는 경우, FPGA 용 라이브러리 코드를 모두 컴파일해야합니다. 그리고 FPGA 시스템에서 코드가 실행될 때 FPGA의 이러한 라이브러리를 사용할 수 있도록 해주는 FPGA 시스템 런타임 환경이 필요합니다.

OpenCV가 사용하는 모든 라이브러리, 해당 라이브러리에 필요한 모든 라이브러리, OpenCV 자체 및 최상위 레벨 응용 프로그램 코드를 컴파일해야합니다. 오, 그리고 FPGA 시스템을위한 런타임 환경을 작성하십시오. 이 모든 것을 컴파일 할 수 있다고하더라도 FPGA 리소스에는 적합하지 않습니다.

반면에 최상위 레벨 C 코드와 필요한 이미지 처리 C 코드를 작성하여 FPGA 시스템 용으로 컴파일 할 수 있습니다. OpenCV 소스 코드는 FPGA 타겟을위한 다양한 이미지 처리 알고리즘을 구현하는 방법에 대한 뛰어난 참조 도구입니다.

+0

고맙습니다. 그러나 나는 "Extracting ... reasonable goal"부분을 얻지 못했습니다. 즉, 먼저 컴퓨터에서 정상적으로 컴파일 한 다음 FPGA 용 알고리즘을 조정해야합니다. – Chris

+0

@Chris - 단순히 OpenCV C 코드를 모두 다시 컴파일하는 대신 이미지 처리 코드를 작성해야합니다. 나는 당신이 제안하고 있다고 생각하는 것의 복잡성과 규모를 개략적으로 설명하기 위해 나의 답을 수정했다. –

+0

이제 더 많은 정보를 얻은 것이 더 분명합니다. 나는 간단한 C 코드를 고수 할 것이다. – Chris

관련 문제