本文共 3772 字,大约阅读时间需要 12 分钟。
建议大家安装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 updateapt-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-devapt-get install libpng-devapt-get install -y \ build-essential \ cmake \ gitapt-get install -y pkg-config \ libjpeg8-devapt-get install -y libgtk2.0-dev \ libavcodec-dev \ libavformat-dev \ libswscale-dev \ libv4l-dev \ libatlas-base-dev \ gfortran \ libhdf5-devapt-get install libjpeg-devapt-get install libtiff4-dev libjasper-devapt-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 updatesudo apt install libjasper1 libjasper-dev如果还是报错第二种方法添加更新源sudo vim /etc/apt/sources.list添加deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universesudo apt updatesudo apt install libjasper1 libjasper-dev
libjasper1是libjasper-dev的依赖包
b、报错:sudo: add-apt-repository: command not found 解决办法:sudo apt-get install python-software-propertiessudo 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 40976EAF437D05B5apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
执行上面命令后再执行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 variableNo 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
安装过程中出现的其它问题我都记录在博客中了,大家可以翻阅我之前的博客找解决方法,就不再这里赘述了。
参考博客: