一、默认 OpenCV 卸载
为什么要卸载默认的 OpenCV ?
- 输入命令
sudo jtop
- 按数字6查看INFO页面,可以看到
* OpenCV: 4.1.2 compiled CUDA: NO
- 所以默认的 OpenCV 版本是不带 CUDA 加速的,无法充分利用 NX 的 GPU 性能
卸载默认的 OpenCV 方法
sudo apt purge libopencv*
sudo apt autoremove
sudo apt update
二、编译安装 OpenCV
安装依赖库
- 输入以下命令
sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
注:依赖库安装对各库版本要求较高,极力推荐使用aptitude自动管理包。sudo apt install aptitude 安装,之后用aptitude指令代替apt
sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo aptitude install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo aptitude install libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo aptitude install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo aptitude install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
三、下载 OpenCV 和 opencv_contrib 源码
- 分别前往 OpenCV 和 opencv_contrib 的 github 仓库下载 Latest release 源码 ( 点击超链接跳转)
- 点击source code即可下载
- 注意 OpenCV 和 opencv_contrib 的版本要对应正确
四、编译和安装 OpenCV
- 将 opencv-4.5.3.zip 和 opencv_contrib-4.5.3.zip解压
- 将opencv_contrib-4.5.3移到opencv-4.5.3下
cd opencv-4.5.3
mkdir build
cd build
- 执行 cmake
-
cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DOPENCV_ENABLE_NONFREE=1 \ -DBUILD_opencv_python2=1 \ -DBUILD_opencv_python3=1 \ -DWITH_FFMPEG=1 \ -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \ -DCUDA_ARCH_BIN=7.2 \ -DCUDA_ARCH_PTX=7.2 \ -DWITH_CUDA=1 \ -DENABLE_FAST_MATH=1 \ -DCUDA_FAST_MATH=1 \ -DWITH_CUBLAS=1 \ -DOPENCV_GENERATE_PKGCONFIG=1 \ -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.3/modules \ ..
执行make--编译(大约3小时)
cat /proc/stat | grep cpu[0-9] -c # 查看线程数
make -j12
- make 编译完成后,进行安装(大约3小时)
sudo make install
----------------------------分界线----------至此是按照网友说的试验后可正常运行,下面是幺蛾子
五、检验安装结果
- 在 python3 中运行以下命令
import cv2
cv2.__version__
结果----报错没有opencv,如果cmd运行Python调用opencv会报错如下,接下来一通操作
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.3) /home/chen/Downloads/opencv-3.4.3/modules/highgui/src/window.cpp
:632: error: (-2:Unspecified error) The function is not implemented. Rebuild the library
with Windows, GTK+ 2.x or Carbon 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'
Aborted (core dumped)
系统提示
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
试了不管用
问题原因---来自网友If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config_绿竹巷人的博客-CSDN博客
问题出在,安装opencv时编译配置出现了问题
我执行的是cmake …
而正确的执行命令是
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
操作:
解决方法(时间又大约3小时)
找到安装opencv的文件夹
cd /home/chen/Downloads/opencv-3.4.3
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
sudo make
sudo make install
六、再次检验安装结果
pkg-config --modversion opencv
结果提示 Package opencv was not found in the pkg-config search path.
解决方法如下:
cd /usr/local/lib sudo mkdir pkgconfig cd pkgconfig sudo touch opencv.pc sudo gedit opencv.pc
首先建一个新的文件夹:pkgconfig
然后cd到这个文件夹下,新建opencv.pc文件;
再打开opencv.pc文件,文件内输入:
prefix=/usr/local exec_prefix=${prefix} includedir=${prefix}/include libdir=${exec_prefix}/lib Name: opencv Description: The opencv library Version:4.5.3 Cflags: -I${includedir}/opencv4 Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
然后保存退出。
接下来更改环境变量:sudo gedit /etc/bash.bashrc
在文件后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
保存退出,执行下面生效
source /etc/bash.bashrc
七、配置pycharm里的解释器
我配置的是自己后期安装的3.6
1.file,setting中
2.run,edit configuration中
3.运行程序测试--成功