【发布时间】:2018-04-14 04:00:56
【问题描述】:
我在使用 GCC 工具链进行编译时遇到问题。我正在使用 OpenCV 开发面部检测程序,该程序注定稍后在嵌入式 Linux 平台(如 Raspberry PI3)中工作,这就是我继续进行的方式:
首先,在运行 Ubuntu 的 PC 上:
在这台机器上,我安装了带有 NO 虚拟环境的 OpenCV 2.4。
我在 Python 2.7 中开发了该软件,使用 OpenCV 库和其他库,例如 NumPy 等。现在为了优化我的代码,我使用 Cython 将 .py 文件转换为 .c,然后编译生成的 .c 文件并将其链接到一个唯一的可执行文件中。可执行文件运行良好并通过了所有测试,我还获得了性能(快速响应)。
其次,在树莓派 3 上出现问题
在这里,我使用 Python 2.7 在名为 (cv) 的虚拟环境中安装了 OpenCV 3.1.0。
然后我尝试将代码源移植到 Raspberry PI,经过一些调整和一些小的修改后,我的 Python 文件 .py 工作正常,软件工作正常。现在的问题是,当我用相同的方法编译使用 Cython 生成的 .C 文件时,编译失败,我猜是因为 OpenCV 只安装在虚拟环境中,所以我给 GCC 一个链接到安装 OpenCV 并通过编译的 VirtualEnv 文件夹的路径。但是可执行文件仍然给我一个错误,说即使所有这些步骤都在激活(cv)虚拟环境的情况下完成,导入 cv2 也找不到 cv2 包。
现在我要提问: - 有什么方法可以概括虚拟环境中安装的内容,例如,在我的情况下,我需要 OpenCV 可以从 Raspberry 中的任何地方调用,而无需登录到虚拟环境? - 可执行文件是否知道它们是在虚拟环境中启动的?我的意思是如果他们需要一个只安装在虚拟环境中的包,我怎么能让他们知道呢?
注意我的方法基于这两篇文章:
【问题讨论】:
-
将OpenCV目录添加到
PATH和LD_LIBRARY_PATH环境变量中。 -
@zindarod 我应该添加什么目录?我添加了 dist-packages 目录:
/home/pi/.virtualenvs/cv/local/lib/python2.7/site-packagescv2.so 安装到两个变量但它仍然不起作用!
标签: python c opencv raspberry-pi cython