OpenCV
- 安装准备
- 安装cmake工具
- 依赖环境(有点多)
- 下载opencv
- 安装
- 解压文件
- cmake
- 进行编译
- 进行安装
- 查看版本
- mang bugs
- /etc/bash.bashrc:11: command not found: shopt
- No package 'opencv' found
- Unable to init server: Could not connect: Connection refused
opencv在Ubuntu上安装,是一件极为痛苦的事情,下面来说明一下我的痛苦全过程。
安装准备
安装cmake工具
sudo apt-get install cmake
依赖环境(有点多)
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
下载opencv
opencv下载地址
一般Ubuntu下我推荐直接下载source的zip压缩包,然后选择一个版本即可
安装
解压文件
前面下载的是zip压缩文件
unzip opencv-4.4.0.zip
# 没有下载unzip可以sudo apt-get install unzip
可以看到解压的是一个opencv-4.4.0,进行下面操作
cd opencv-4.4.0
mkdir build
cd ./build
cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
大概几分钟
进行编译
sudo make -j8 # 这是最好的安装效果,但是对电脑配置,内存等等要求高
sudo make -j4 # 退而求其次
sudo make # 最慢
安装时间极为缓慢,请耐心等待
进行安装
sudo make install
用gedit打开/etc/ld.so.conf
在文件中加上一行 /usr/loacal/lib
其中/user/loacal是opencv安装路径也就是makefile中指定的安装路
sudo gedit /etc/ld.so.conf
# 或者切换到root的vim /etc/ld.so.conf
sudo ldconfig,
修改bash.bashrc文件
sudo gedit /etc/bash.bashrc
# 或者切换到root的vim /etc/bash.bashrc
文件尾加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
命令行输入
source /etc/bash.bashrc
查看版本
➜ ~ pkg-config --modversion opencv
4.4.0
安装完成
mang bugs
当然各种配置导致的bug是少不了的
/etc/bash.bashrc:11: command not found: shopt
比如在这一步:/etc/bash.bashrc:11: command not found: shopt
这主要是因为你的终端不是bash的原因
查看终端版本
echo $SHELL
/usr/bin/zsh
那就去.zshrc文件里面添加
vim .zshrc
# 添加如下
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后再
source .zshrc
运行无错误
No package ‘opencv’ found
当我们输入以下查看是否安装好的时候
pkg-config opencv --modversion
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
缺少opencv.pc文件???
我们来到
cd /usr/local/lib
创建文件夹并进入
sudo mkdir pkgconfig && cd pkgconfig
修改opencv.pc文件夹
prefix=/usr/local
exec_prefix=${prefix}
includedir=/usr/local/include
libdir=/usr/local/lib
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.4.0
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}
保存文件
Unable to init server: Could not connect: Connection refused
当上面的保存文件的时候,可能出现无法保存的情况,这是因为在xshell好像在某种条件下不允许
Unable to init server: Could not connect: Connection refused
查阅了相关资料发现要切换用户
xhost+ # root
error:xhost: unable to open display "localhost:10.0"
又查阅了相关资料发现要用xhost+要按照xstart,在xshell里面就是xterm
sudo apt-get install xterm
该命令可查阅是否可以用xhost
/usr/bin/xterm -ls -display $DISPLAY
此时再来修改opencv.pc
vim opencv.pc
没有报错
最后来修改etc/bash.bashrc(一般情况下不用修改)
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
最后测试
➜ /etc pkg-config --modversion opencv
4.4.0