【问题标题】:Can I use openCV libraries with Catapult C?我可以在 Catapult C 中使用 openCV 库吗?
【发布时间】:2013-04-26 15:22:29
【问题描述】:

我的最终目标是在 Altera DE2 FPGA 上进行人脸/对象检测和通用图像处理应用程序。我正在使用 Catapult C 对 FPGA 进行编程(所以我使用的是 C 代码,而不是 Verilog 或 VHDL)。

我的问题是 Catapult C 是否支持 openCV 库,以及有关如何安装库以便它们在 Catapult 中运行的任何提示/链接。有什么特别的考虑吗?搜索了谷歌和stackoverflow,但还没有运气。 谢谢。

【问题讨论】:

    标签: opencv image-processing fpga face-recognition hardware-design


    【解决方案1】:

    我什至不会尝试为 FPGA 执行目标编译 OpenCV 源代码。 OpenCV(或任何大型微处理器目标代码库)中有太多的库依赖和面向微处理器架构的假设。

    任何系统上都有编译时和运行时库。例如,如果我们查看 OpenCV 共享库的运行时库依赖关系,OpenCV 本身使用的微处理器代码库有很多:

    dpointer@death:~$ 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)
    dpointer@death:~$ 
    

    如果您想在 FPGA 系统上编译和使用 OpenCV,您还需要为 FPGA 编译所有这些库代码。而且您需要一个 FPGA 系统运行时环境,以确保当您的代码在 FPGA 系统上运行时,FPGA 上的这些库可用。

    这是一项艰巨的任务 - 您必须编译 OpenCV 使用的所有库、这些库所需的所有库、OpenCV 本身以及您的顶级应用程序代码。哦,为您的 FPGA 系统编写一个运行时环境。即使您可以编译所有这些,它也不适合 FPGA 资源。

    另一方面,您可以编写顶级 C 代码和任何所需的图像处理 C 代码,然后为 FPGA 系统编译它们。 OpenCV 源代码是如何为 FPGA 目标实现各种图像处理算法的出色参考工具。

    【讨论】:

    • 我明白了,谢谢。但是我并没有真正得到“提取......合理的目标”部分。意思是我先在电脑上正常编译,然后再针对FPGA调整算法?
    • @Chris - 我的意思是您需要编写图像处理代码,而不是简单地重新编译所有 OpenCV C 代码。我修改了我的答案,以概述我认为您所提议的内容的复杂性和重要性。
    • 现在更清楚了,再次感谢您提供的附加信息。我会坚持使用简单的 C 代码。
    • @Chris - 不客气。感谢您要求澄清!
    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 2012-07-02
    • 2016-12-12
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2015-10-02
    相关资源
    最近更新 更多