欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8

程序员文章站 2024-02-26 20:40:46
...

在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