ubuntu20.04安装opencv4.5.2和opencv_contrib4.5.2和配置路径
caffe在windows安装太坑了,尝试在虚拟机上安装,记录一些踩坑的过程文章目录环境一、安装依赖环境二、安装opencv2.读入数据总结环境ubuntu20.04anaconda5.6python3.8cmake3.16一、安装依赖环境依次输入以下命令sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libope
由于工作需要caffe,但是caffe在windows安装太坑了,所以尝试在虚拟机上安装,而安装caffe好像需要opencv环境,这里记录一些使用ubuntu20.04通过源码和cmake编译opencv踩的坑。
环境
ubuntu20.04
anaconda5.6
python3.8
cmake3.20
附注,ubuntu删除python2.7的方法(和安装opencv无关,只是不喜欢ubuntu里面多个python2.7)
sudo apt-get remove python2.7
sudo apt-get remove --auto-remove python2.7
sudo apt-get purge python2.7
sudo apt-get purge --auto-remove python2.7
python3.8安装opencv的方法
pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
如果使用virtualBox可以下载Oracle VM Virtual Extension Pack,安装之后重启,虚拟机可以调用物理机的摄像头,virtualbox6.1.22适配版本的下载地址:https://download.virtualbox.org/virtualbox/6.1.22/Oracle_VM_VirtualBox_Extension_Pack-6.1.22.vbox-extpack重启之后设置设备->摄像头
一、安装依赖环境
依次输入以下命令
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install build-essential
sudo apt-get install python3-dev python3-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
#下面的一些指令都是cmake过程中提示 "No package '***" found" 后安装的,可以考虑在编译opencv源码前全部安装
sudo apt-get install libgtk-3-dev
sudo apt-get install libvtk6-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install tesseract-ocr libtesseract-dev
sudo apt install ccache
如果执行
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
报错Unable to locate package libjasper-dev,那么将上述命令中libjasper-dev删掉,安装完成后执行如下命令
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper-dev
如果执行过程中有其他错误,参考爱跑步的mango的经验。
二、通过Ubuntu仓库安装opencv
ubuntu安装opencv可以使用Ubuntu Repository,安装方式简单,在终端执行如下指令
sudo apt update
sudo apt install libopencv-dev python3-opencv
上述指令会安装运行opencv需要的所有的包。但是上述安装方式好像不适用于caffe。
三、通过源码安装opencv
下面将记录使用源码安装的过程和踩得坑。
opencv开源网站 https://opencv.org/,下载源码opencv源码链接https://github.com/opencv/opencv/archive/4.5.1.zip
将压缩包解压到要安装的位置。
在终端进入源码解压位置,如下图,~/opencv4.5.1即我解压opencv.zip的位置,然后执行如下命令
ippicv依赖包下的十分慢,所以需要的话可以先把需要的包下下来,ippicv包下载链接https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20191018/ippicv。编译前先修改/sources/3rdparty/ippicv/ippicv.cmake文件,修改如下:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/
替换为
ippicv_xxx.tgz存放的绝对路径
不修改也可以,只是过程比较耗时间。
mkdir build #创建编译文件保存路径
cd build
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv ..\
-D PYTHON_DEFAULT_AVAILABLE=/usr/bin/python3.8 \ #指定python解释器,默认为python2版本
-D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_CUDA=OFF .. \ #禁用cuda,虚拟机安装无法调用cuda,若不禁止,编译时会报错
-D ENABLE_CXX11=1 #打印编译日志
/build即存放cmake编译后的文件夹
如果安装过程中,执行到IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz
卡住,那是因为官方提供的链接被墙了,可以到https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20191018/ippicv下载。相关链接见gadwgdsk的博客。
完成之后,执行
make -j8 #编译,-j8指用8线程编译,具体参数可以参考硬件设定
make install
如果报错
modules/cudalegacy/src/graphcuts.cpp:120:54: error:
‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize,
NppiGraphcutState** ppState, Npp8u* pDeviceMem);
修改/opencv/modules//cudalegacy/src/graphcuts.app的内容
当然还会有其他想不到的问题,但一般问题都是因为依赖库没有安装,可以安装需要的依赖包解决。
四、opencv环境配置
首先将Opencv的库添加到系统路径
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开文本之后添加opencv的lib库,如果安装时没有制定安装目录,即 cmake后面没有添加-D CMAKE_INSTALL_PREFIX=/usr/local/opencv添加1,否则添加opencv的安装目录(注意,#以及#后面的文字不需要添加在文本,下同):
/usr/local/lib #1
/usr/local/opencv/lib #2 opencv的安装路径
之后使配置文件生效,配置并且bash
sudo ldconfig
sudo gedit /etc/bash.bashrc
在文件末尾添加pkgconfig的路径,默认为1
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig #1
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv/lib/pkgconfig #2
export PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/usr/local/opencv/lib
export OpenCV_DIR=/usr/local/opencv
使bash配置生效
source /etc/bash.bashrc
pkg-config --modversion opencv4 #输出opencv的版本
python3 -c "import cv2; print(cv2.__version__)" #python3输出opencv版本
pkg-config --libs opencv #输出编译生成的链接库
更多推荐
所有评论(0)