/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8
在ubuntu下使用ros和OpenCV的时候,总是会遇到有些程序用的是OpenCV3写的,而有些则用到OpenCV2,而之前每当遇到这种情况,总是很难搞得定。今天就为大家介绍简单的方法能让这些不同的OpenCV版本在你的电脑里兼容。
ubuntu 14.04 + ros indigo
OPENCV多版本共存与版本选择
官网下载OpenCV 2.和OpenCV 3.的安装包,安装其他一些教程首先安装了依赖的一些库文件,之后按照如下流程安装OpenCV。
可以去我的百度云网盘下载: OpenCV 2.4.13 下载链接:http://pan.baidu.com/s/1dEWfXw1
安装方式如下:
unzip opencv-2.4.13.zip
cd opencv-2.4.13
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.13 ..
make
sudo make install
CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.13为你的安装路径。
配置cmake工程
使用ros,catkin_make编译你的功能包时,当你的电脑中安装了多个版本的opencv时,可以通过以下的方式来进行对功能包进行配置,选择你要使用哪种版本的opencv对当前功能包进行编译。
这一步不管你单纯是cmake工程或者是ros的包,都可以通过下面的办法在CMakeLists.txt中添加相应的语句来选择不同版本的OpenCV进行编译。
set(OpenCV_DIR /usr/local/opencv2.4.13/share/OpenCV)
find_package(OpenCV 2.4 REQUIRED)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS} /usr/local/opencv2.4.13/include)
link_directories(${OpenCV_LIBRARY_DIRS} /usr/local/opencv2.4.13/lib))
Attention:一般情况下,不需要进行如此繁琐的配置,ROS会自动从默认的路径下对opencv进行搜索,只需要在CMakeLists.txt文件中加入:
find_package(OpenCV REQUIRED)
cv_bridge与opencv兼容性问题
注:当出现如下问题的时候可以按照此方法解决,如果没有报错则不需要进行处理。
这里使用到的是ros indigo,由于当我们需要用到OpenCV时,通常都需要运用cv_bridge或者image_pipeline或者image_transport包来转换传输图片,而这两个包又是依赖于OpenCV 2.4.8来编译的,所以每当同时需要用到OpenCV3和cv_bridge的时候,便会产生如下错误:
make[2]: *** 没有规则可以创建“/home/free/catkin_ws/devel/lib/libQRLocation.so”需要的目标“/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8”。 停止。
make[1]: *** [robot_external/robot_qrlocation/CMakeFiles/QRLocation.dir/all] 错误 2
make: *** [all] 错误 2
Invoking "make -j4 -l4" failed
解决方法:所以,要解决这个问题,方法就是把cv_bridge和image_pipeline和image_transport下载到本地的工作空间,并重新编译。但是因为他们基于OpenCV 2可以直接编译成功,所以在OpenCV 3下则需要相应做一些改动。这里有一个我从github上找到的,别人修改过的,可以直接下载并且使用OpenCV 3编译成功的cv_bridge包,网址如下:
cv_bridge : 链接:http://pan.baidu.com/s/1c2KmZfU 密码:4afd
将软件包中的cv_bridge文件夹拷贝到catkin_ws/src下,使用catkin_make编译即可,该问题就可以解决了。由于只是用到了cv_bridge所以其他的就不进行更改了。
推荐阅读
-
/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8
-
linux - 安装好php为什么要复制一份php.ini 到/usr/local/php/lib/php.ini
-
opensuse - /usr/bin/php /usr/lib64/libxml2.so.2 no version
-
mac 安装了phantomjs 2.5 提示:dyld: Library not loaded: /usr/local/opt/webp/lib/libwebp.6.dylib
-
redis集群错误解决:/usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis/client.rb:79:in `call': ERR Slot 15495 is already busy (Redis::CommandError)
-
/usr/local/lib/ruby/gems/2.4.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:118:in `git_version': Failed to extract git version from `git --versi
-
- bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
-
今天整理下 linux目录的说明 :/dev, /proc, /bin, /etc, /lib, /usr, and /tmp
-
今天整理下 linux目录的说明 :/dev, /proc, /bin, /etc, /lib, /usr, and /tmp
-
./mongod: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3‘ not found (required by ./