0 写在前面
查询你自己安装的opencv库,如果是系统自带的或者是ros自带的,千万不要删了,要不然ros会崩
0.1 查询自己的opencv版本
pkg-config --modversion opencv
0.2 判断ros自带的opencv版本:发现系统内的opencv就是ros自带的,不能删,既然已经有了opencv就别编译安装了被,要不然冲突了就不好了
dpkg -l | grep libopencv
1、opencv与opencv_contrib安装
1、opencv下载与opencv_contrib下载与解压
opencv下载github链接Tags · opencv/opencv · GitHub
opencv_contrib下载github链接Tags · opencv/opencv_contrib · GitHub
下载时要注意版本两者版本是一致的,我下载的是opencv-3.4.19.zip与opencv_contrib-3.4.19.zip
并将其放到了Downloads目录下,因为是.zip文件,所以用unzip进行解压
cd ~/Downloads/
unzip opencv-3.4.19.zip
unzip opencv_contrib-3.4.19.zip
2、环境配置
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
出错:
解决方法:运行以下语句(参考博客:解决 “E: Unable to locate package libjasper-dev” (亲测有效)_e: 无法定位软件包 libjasper-dev-CSDN博客)
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
3、安装
3.1 在opencv文件夹下建立build文件夹并进入
cd ~/Downloads/opencv-3.4.19/
mkdir build
cd build
3.2 使用cmake构建opencv,这里我有话说
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/dj2c/Downloads/opencv_contrib-3.4.19/modules ..
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/dj2c/Downloads/opencv_contrib-3.4.19/modules ..
其中
-DCMAKE_BUILD_TYPE=Release
:指定构建类型为 Release,即编译优化级别较高的版本。-DCMAKE_INSTALL_PREFIX=/usr/local
:指定安装路径为/usr/local
,这是一个常见的安装路径。-D OPENCV_EXTRA_MODULES_PATH=/home/dj2c/Downloads/opencv_contrib-3.4.19/modules
:指定额外的模块路径,这些模块通常不包含在标准的 OpenCV 发行版中。在这个例子中,它指定了一个名为opencv_contrib
的目录,其中包含了额外的模块。我在opencv_contrib-3.4.19文件夹下的modules的路径为/home/dj2c/Downloads/opencv_contrib-3.4.19/modules你要换成自己的
..
表示 CMake 的构建目录,即 CMakeLists.txt 所在的目录的上级目录。这个命令告诉 CMake 在上级目录中查找 CMakeLists.txt 文件,并使用指定的参数进行构建。
运行出错1:原因是有个文件没有下载下来
分析:它说IPPICV下载失败让我们查看文件
/home/dj2c/Downloads/opencv-3.4.19/build/CMakeDownloadLog.txt获取详细信息文件里可以看见里面有说这个文件没有下载下来,并且给了一个网址,直接从网址下载,你发现你可能连网页都很难打开,幸好有万能的网友分享了这个文件:这是她的博客http://t.csdnimg.cn/OTxR5
我这里也给出
通过百度网盘分享的文件:ippicv_2…
链接:https://pan.baidu.com/s/1Yl2KzCt8Hh0XYnUyjaA24w?pwd=gq54
提取码:gq54
我将文件的压缩包放到了路径file:///home/dj2c/Downloads下,找到配置文件/home/dj2c/Downloads/opencv-3.4.19/3rdparty/ippicv/ippicv.cmake并打开,将下载修改路径为file://+j绝对路径:file:///home/dj2c/Downloads/,如下图所示:
诶呦,突然发现自己没开科学上网,我说怎么那么多毛病,搞科研不科学科研,完全就是给自己找罪受。
其他文件错误见他人博客:
3.3 make
sudo make -j8
现在是学到了,make的时候能-j8就-j8,多线程节约时间,执行nproc查询自己的核心处理器数量
3.4 安装
sudo make install
3.5 添加路径
sudo gedit /etc/ld.so.conf.d/opencv.conf
这里我看很多高手都用vim进行编辑,但是我下载了都不会用,有空学习学习,小白才用gedit
sudo vim /etc/ld.so.conf.d/opencv.conf
在文件中添加如下内容,是个空白文件,干就完了:
/usr/local/lib
再在终端输入使其保存并生效:
sudo ldconfig
再在终端输入:
sudo gedit /etc/bash.bashrc
打开文件后在文件末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出,终端输入:
source /etc/bash.bashrc
3.6 验证测试
回到~/Downloads/opencv-3.4.19路径下:
cd ~/Downloads/opencv-3.4.19/samples/cpp/example_cmake/
cmake .
make
./opencv_example
最终显示出一个这样的框就是成功了(我没摄像头所以是黑的)
(注:参考文献:http://t.csdnimg.cn/Tm5iy)