建议大家安装opencv4.0.1及以前的版本,因为opencv4.0.1以后的版本要求numpy>1.19.3,而rknn-tookit的whl包要求numpy==1.16.3,我是安装完opencv4.5.1 才装的rknn-toolkit1.6 目前开发板numpy=1.20.1,每次pip安装其它包时都会出现rknn 依赖的numpy版本不匹配错误,忽略它使用rknn还是可以用的,不知道之后会不会有什么问题(ps:懒癌犯了,到时候再重新编译低版本的opencv吧)
1、安装依赖库
我这里是想在opencv中调用gstreamer,如果不想用这个功能的可以不用安装gstreamer相关包。
apt-get update
apt-get install -y libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
gstreamer1.0-doc \
gstreamer1.0-tools \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev
apt-get install libpng-dev
apt-get install -y \
build-essential \
cmake \
git
apt-get install -y pkg-config \
libjpeg8-dev
apt-get install -y libgtk2.0-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libv4l-dev \
libatlas-base-dev \
gfortran \
libhdf5-dev
apt-get install libjpeg-dev
apt-get install libtiff4-dev libjasper-dev
apt-get install -y libtbb-dev libeigen3-dev
2、源码下载,编译和安装
git clone https://github.com/opencv/opencv.git #下载最新版本opencv源码
mkdir build && cd build # 创建build目录并切换进去
cmake -D CMAKE_BUILD_TYPE=RELEASE -DOPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D PYTHON_EXECUTABLE=/usr/bin/python3 -D PYTHON_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.7/dist-packages/numpy/core/include/ -D WITH_GSTREAMER=ON -D WITH_GTK=ON -D WITH_GTK_2_X=ON -D WITH_GTHREAD=ON -D WITH_TBB=ON -D WITH_OPENGL=ON ..
因为要用python接口调用opencv,所有指定了python3的环境目录,如果只使用c++接口的话可以去掉python相关的选项。-D WITH_GSTREAMER=ON是为了开启gstreamer。
编译和安装
make -j4 #4核编译
make install #安装,卸载可用make uninstall
测试
接下来可以在c++和python中测试opencv是否安装成功 ,网上案例很多,就不再这里贴代码了。
3、报错问题解决方案
a、安装opencv但是在安装依赖包的过程中,有一个依赖包,libjasper-dev在使用命令
sudo apt-get install libjaster-dev
提示:errorE: unable to locate libjasper-dev
解决办法:
第一种方法
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
如果还是报错
第二种方法
添加更新源
sudo vim /etc/apt/sources.list
添加
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
sudo apt update
sudo apt install libjasper1 libjasper-dev
libjasper1是libjasper-dev的依赖包
b、报错:sudo: add-apt-repository: command not found
解决办法:
sudo apt-get install python-software-properties
sudo apt-get install software-properties-common
c、sudo apt-get update 报错:
W: GPG error: http://security.ubuntu.com/ubuntu xenial-security InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
解决办法:
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
注:如果此时出现下面的错
Executing: /tmp/apt-key-gpghome.oXLFXgATUw/gpg.1.sh --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory
gpg: connecting dirmngr at '/run/user/0/gnupg/d.froeehpqidna3zbpkxk9znn5/S.dirmngr' failed: No such file or directory
gpg: keyserver receive failed: No dirmngr
需执行:sudo apt install dirmngr
执行上面命令后再执行sudo apt-get update即可。
d、c++测试opencv报错:
命令:g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`
报错: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
解决办法:
https://blog.csdn.net/PecoHe/article/details/97476135
e、python测试opencv报错:
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:627: error: (-2:Unspecified
error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on
Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'
解决办法:pip install opencv-contrib-python
安装过程中出现的其它问题我都记录在博客中了,大家可以翻阅我之前的博客找解决方法,就不再这里赘述了。
参考博客:
https://blog.csdn.net/qq_40199447/article/details/109309186
https://blog.csdn.net/yuanlulu/article/details/88917603
https://blog.csdn.net/GerZhouGengCheng/article/details/107814841?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.control