在没有 sse 的情况下编译 OpenCV 以在 ROS 中使用

Posted

技术标签:

【中文标题】在没有 sse 的情况下编译 OpenCV 以在 ROS 中使用【英文标题】:Compiling OpenCV without sse for use in ROS 【发布时间】:2013-03-06 00:46:44 【问题描述】:

所以我遇到了一个似乎与在不支持 SSE 的处理器上在 ROS 中使用 OpenCV 相关的问题。具体来说,每当尝试使用 OpenNI 或 freenect 与 Xbox Kinect 交互时,就会出现此问题。每当我尝试启动其中任何一个时,都会收到“非法指令”错误。根据我的阅读,这个问题可以追溯到 opencv 并且它使用 SSE,这在我的处理器上不受支持(Roboard RB100 上的 Vortex86DX)。我找到了有关如何从源代码编译 OpenCV 以及使用标志在没有 SSE 的情况下进行编译的说明,但无法弄清楚如何在 ROS 中使用它。有人知道如何在 ROS 中使用自定义编译版本的 OpenCV 来缓解这个问题吗?

谢谢!

如果您需要任何进一步的信息,请询问。

【问题讨论】:

【参考方案1】:

如果您在旧 CPU 上尝试使用 opencv 和 ROS 时遇到“非法指令”错误,请尝试构建不带 SSE3 的 opencv 库,然后将它们复制到 ROS 版本上。

例如,像这样的:

$ cd ~/opencv-2.4.9
$ mkdir build && cd build && cmake -DENABLE_SSE3=OFF .. && make && sudo make install
$ sudo cp `ls /usr/local/lib/libopencv*.2.4.9` /opt/ros/hydro/lib

然后看看是否有效:

$ python
> import cv

【讨论】:

【参考方案2】:

我遇到了类似的问题。 检查旧的库是否不在 ROS 库路径中,例如 /opt/ros/groovy/lib

您还可以更新环境变量以确保之前已加载新库。

【讨论】:

以上是关于在没有 sse 的情况下编译 OpenCV 以在 ROS 中使用的主要内容,如果未能解决你的问题,请参考以下文章

MAC OS X 中 gcc 4.3 或更高版本的 OpenCV 编译错误

ios下编译opencv

在linux下编译opencv for android

在没有 AVX 的情况下编译 boost

在release模式下编译opencv写的人脸检测代码,提示:无法打开输入文件“opencv_calib3d244.lib”

Ubuntu下编译opencv