一、Opencv安装
1、首先更新一下,安装一些依赖库
(可能不全,就缺什么安装什么吧)
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y build-essential
sudo apt-get install -y libopencv-dev
sudo apt-get install -y libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev # 处理图像所需的包
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install -y libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install -y libatlas-base-dev gfortran # 优化opencv功能
sudo apt-get install -y ffmpeg # 视频相关
2、下载opencv
opencv可以通过下面两个链接下载
opencv 官网:https://opencv.org/
opencv github:https://github.com/opencv
opencv release:https://opencv.org/releases/
opencv_contrib release :Tags · opencv/opencv_contrib · GitHub
分别解压,opencv和opencv_contrib压缩包,然后执行下面的命令
3、使用CMAKE如下指令进行预编译:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.8.0 \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D WITH_GTK=ON \
-D OPENCV_GENERATE_PKGCONFIG=YES \
-D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib-4.x/modules \
-D OPENCV_ENABLE_NONFREE=YES \
-D WITH_FFMPEG=ON \
-D BUILD_EXAMPLES=ON ..
编译参数说明:
-
-D CMAKE_BUILD_TYPE=Release
:设置构建类型为Release模式。这意味着编译器将启用优化,并且不包含调试信息,生成的库或可执行文件更适合生产环境部署,运行速度更快但调试难度相对增大。 - CMAKE_INSTALL_PREFIX: # 指定安装路径,一般在选择在/usr/local/下,最好指定一个opencv文件夹例如 /usr/local/opencv-4.8.0, 方便以后查找opencv的库
- OPENCV_EXTRA_MODULES_PATH: 指定额外模块路径,OpenCV的额外模块(比如新增功能、扩展算法等)位于opencv_contrib仓库中,这个参数告诉CMake去哪里找这些模块并将其纳入构建,这样除了基本的OpenCV模块外,还能编译安装额外的功能模块。 opencv_contrib 包的路径,如果不安装opencv_contrib,这个参数可以不用
- OPENCV_ENABLE_NONFREE: # 表示使用申请专利的算法, 否则在使用一些算法的时候会报一下错误
- -D WITH_FFMPEG=ON 增加视频支持
注意如果在opencv中使用申请专利的算法,会报错如下
/home/sdc/Downloads/opencv-3.4.5/opencv_contrib-3.4.5/modules/xfeatures2d/src/surf.cpp:1027: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'
编译安装:
# make -j${nproc} # 可以使用 nproc 查看核心数
make -j10 # 编译,开启线程 按照自己的配置,
sudo make install # 编译成功后安装,此处用sudo,因为要在/usr/local路
# 径下创建相关文件,必须root权限
4、环境变量配置:
1、环境配置添加库路径
# 配置Opencv,动态库配置
sudo gedit /etc/ld.so.conf.d/opencv.conf
# 打开后可能是空文件,在文件内容最后添加
/usr/local/lib
# 以上两条命令可以合成下面一条命令
# sudo /bin/bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
# 然后执行生效命令
sudo ldconfig
2、配置bash,执行如下命令
sudo gedit ~/.bash.bashrc
# 在末尾添加
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv-4.8.0/lib
# 保存退出,执行更新命令
source ~/.bash.bashrc
3、验证:
pkg-config --modversion opencv4
pkg-config --cflags opencv4
pkg-config --libs opencv4
结果
二、opencv 安装遇到问题
1、IPPICV下载失败问题
解决编译opencv时,卡在IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz
解决方式1:测试过可用
1、下载 IPPCV, 之后重新命名 编译时的名字。
2、修改 opencv 解压后的文件 opencv/opencv-4.8.0/3rdparty/ippicv/ippicv.cmake, 找到
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 改为:"file:/home/ytusdc/ippcv/" , ippcv 是刚才下载的IPPICV包存放位置,根据自己的位置更改。
注意:文件最后要包含 "/", 否则可能报错
解决方式2:不需要修改ippicv.cmake文件的办法 测试可用
解决OpenCV IPPICV 下载不成功的问题 - ZhaoqunZhong - 博客园
当你首次编译opencv并且提示下载ippicv不成功时,你会发现在opencv源文件的根目录下 .cache 下会自动创建一个ippicv的文件夹,里面有一个空的文件,7421de0095c7a39162ae13a6098782f9-ippicv_2020_lnx_intel64_20191018_general.tgz。当然,这个文件的具体名字也跟你的opencv版本有关。由于下载失败或者下载到一半,所以这个缓存文件的大小是0kb或者大小不是整个完全包的大小。你只需要把手动下载的ippicv_2020_lnx_intel64_general_20191018_general.tgz文件重命名成这个缓存文件的名字,并替换这个空的缓存文件。然后重新编译opencv,就会发现提示ippicv找到了。
这个方法也同样适用于其他包下载失败的情况
2、找不到共享库:
1、error while loading shared libraries: libopencv_core.so.3.4: cannot open share
原因:从这个提示可以知道系统找不到libopencv_core.so.3.4在哪儿,而系统是通过/etc/ld.so.conf中的路径找.so这个文件的。将libopencv_core.so.3.4的路径加入到.conf文件中就可以了。.so文件一般存放在/usr/local/lib目录下。
主要用过下面两个方式,其实是一样的,只是过程不同罢了
解决方法1:
对ld.so.conf这个文件进行编辑是需要获取超级权限的。
cd ~ //先返回到根目录
sudo vim /etc/ld.so.conf //获取超级权限,并用vim编辑器打开该文件
然后在末尾加入/usr/local/lib即可
退出后执行下面的语句使之生效
sudo ldconfig # 更新动态链接器缓存
然后就可以正常导入了
解决方法2:
如果执行程序显示找不到opencv可以执行下面的命令
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
三、完全卸载opencv
1、From repository,卸载从软件仓库中安装的opencv2
sudo apt-get purge libopencv*
# 强制删除
sudo rm -rf /usr/local/share/opencv*
sudo rm -rf /usr/local/include/opencv*
sudo rm -rf /usr/local/lib/libopencv_*
sudo rm -rf /usr/local/lib/cmake/opencv4/
# 强制删除
find /usr/ -name "*opencv*" | xargs sudo rm -rf
2、From source,卸载使用cmake自行编译安装的opencv2
首先进入原先编译opencv2的build目录,在该目录下打开终端;再执行以下代码。(注意如果build已经删除了,可以重新编译一遍该版本的opencv,然后在最后一步执行sudo make uninstall)
sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
这一步可能有error,忽略之。最后执行如下操作:
sudo apt-get --purge remove opencv-doc opencv-data python-opencv
# 清理系统缓存:此处可以不执行
# 最后,你可以清理系统缓存,以确保所有不必要的文件和依赖项都被删除。可以使用以下命令清理系统缓存:
sudo apt-get autoremove
sudo apt-get autoclean
#这将清理系统中不再使用的包和缓存文件
验证是否删除成功
运行以下命令检查OpenCV是否已被完全卸载:
pkg-config --modversion opencv4
然后就重新安装吧,依赖库等也要重新安装
本小节参考:
参考文章:1、 https://www.cnblogs.com/needybeerlxy/p/8979238.html