目录
一、 安装依赖包
二、下载安装包
三、安装OpenCV
四. 配置OpenCV环境
五、opencv版本测试
六、配置ros有默认3.2版本改为自己安装的4.1.1版本
七、卸载OpenCV
一、 安装依赖包
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
sudo apt-get install ffmpeg
ps: 安装依赖时可能会出现 E: Unable to locate package libjasper-dev ,可参考 博文 解决。
二、下载安装包
自己的需求是将 ROS melodic 默认安装的 opencv3.2.0 版本改为自己需求的opencv4.1.1版本。在 github 上下载对应的opencv版本和opencv_contrib版本,我下载的是opencv4.1.1,所以contrib也要下载4.1.1版本。注意!版本一定要对应!!!
下载链接:opencv链接 、 opencv_contrib链接
三、安装OpenCV
打开终端, cd 到opencv 解压位置
sudo mv opencv-4.1.1 /usr/local
cd /usr/local/opencv-4.1.1
sudo mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D WITH_VTK=ON \
-D OPENCV_GENERATE_PKGCONFIG=YES ..
sudo make -j4
sudo make install
PS: 可能 sudo make -j4 会报错:
解决方法:
编辑
/usr/local/opencv/modules/core/include/opencv2/core/private.hpp
文件。修改 #include <Eigen/Core>
为 #include <eigen3/Eigen/Core>
,重新 make 即可
。
四. 配置OpenCV环境
(1)安装成功后还需要设置opencv的环境变量。打开文件:
sudo gedit /etc/ld.so.conf.d/opencv.conf
(2)将以下内容添加到最后:(空白文件放在首行即可)
/usr/local/lib
(3)配置库:
sudo ldconfig
(4)更改环境变量:
sudo gedit /etc/bash.bashrc
在文件尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,并退出,至此,opencv-4.1.1 理论上安装成功。
五、opencv版本测试
查看是否配置成功:
pkg-config --modversion opencv4
测试opencv-4.1.1是否可以正常使用:
cd /opencv安装路径/samples/cpp/example_cmake
cmake .
make
./opencv_example
PS: make 时可能会报错:
解决方法:修改 CMakeLists.txt 文件,添加 set(OpenCV_DIR /usr/local/opencv/build),重新编译:
运行结果会调用当前摄像头,图像窗口会出现 Hello OpenCV 字样水印。
六、配置ros有默认3.2版本改为自己安装的4.1.1版本
此时,需要配置 ros的cv_bridge配置文件,否则可能会报错。
cd /opt/ros/melodic/share/cv_bridge/cmake/
sudo gedit cv_bridgeConfig.cmake
修改文本中所有 usr/include/opencv (100行附近,共两处)如下图所示,红框为修改头文件目录指定到自己安装的Opencv目录下,蓝框为修改为自己安装的Opencv库文件路径,然后保存即可:
与头文件直接写入目录的方式不同,库文件是将文件本身也写入到配置文件中。而OpenCV的库文件有很多种,如下图所示。通常都将core、highgui、imgproc等常用的库文件写入到配置文件中,万一遇到要用的函数的库文件没有包含在配置文件中只要手动添加就可以。
保存修改cv_bridge的配置文件结束后,我们只需要在工程的CMakeLists.txt文件中的find_package加入cv_bridge就能够使用自己安装的OpenCV版本。
编译运行,可以发现 ros 编译的是Opencv4.1.1版本(下图红框),但自己没有解决 warning 问题(下图蓝框)。测试过,ros可以正常使用,如有大佬知道如何解决warning问题,还请指点(自己搜到的是重装cv_bridge,目前自己还没勇气卸了cv_bridge,,,)
七、卸载OpenCV
因为上述通过源码编译安装 opencv ,若创建的 build 文件夹没有删除(删了也没关系,在原路径重新mkdir build 编译安装一次即可),直接卸载。
cd build
sudo make uninstall
默认的安装路径会将 opencv 的文件安装在 /usr/local/bin, /usr/local/lib, /usr/local/include, /usr/local/share 中,到相应路径下删除相应 opencv 文件夹/文件。
删除多个文件可参考:
sudo rm -rf ./*opencv*.4.1