sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt-get install build-essential
sudo apt install gcc-5 g++-5
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libeigen3-dev
sudo apt-get install python-dev-is-python3 python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper1 libjasper-dev libdc1394-22-dev
OpenCV-3.2.0 (包含OpenCV-Contrib-3.2.0)
git clone https://gitee.com/yxd.osc.com/opencv32.git
mv opencv32 opencv
cd opencv
mkdir build && cd build
可以使用cmake-gui ../opencv进行可视化编译,配置参考下面。
cmake ../opencv \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local/opencv3 \
-DOPENCV_EXTRA_MODULES_PATH=/home/bbnc/opencv32/opencv_contrib/modules \
-DBUILD_DOCS=ON \
-DBUILD_EXAMPLES=ON \
-DPYTHON3_EXECUTABLE=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6 \
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
-DPYTHON3_NUMPY_INCLUDE_DIRS=/home/bbnc/.local/lib/python3.6/site-packages/numpy/core/include \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DWITH_GTK_2_X=ON \
-DWITH_OPENGL=ON \
-DCMAKE_C_COMPILER=gcc-5 \
-DCMAKE_CXX_COMPILER=g++-5 \
-DWIHT_CUDA=ON \
-DCUDA_GENERATION=Kepler \
-DCUDA_ARCH_BIN=8.6 \
-DCUDA_ARCH_PTX="" \
-DWITH_V4L=ON \
-DWITH_TBB=ON
ERROR (在gitee库中以解决下述问题,写在此处只为记录过程,错误较多未能全部列出):
include(cmake/OpenCVMinDepVersions.cmake)
add_definitions(-std=c++11)
if(CMAKE_GENERATOR MATCHES Xcode AND XCODE_VERSION VERSION_GREATER 4.3)
cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
make -j14
(-j后面的数字代表多线程,请根据自己的电脑配置设置,官网默认为7)
sudo make install
OpenCV版本查看
python3
import cv2
cv2.__version__
我在ubuntu18.04.5上同时安装了OpenCV3.2和4.5,默认是4.5版本。想要使用3.2,进入opencv32的build目录。想要切换回4.5,进入OpenCV4.5的build目录,使用同样的操作。
cp lib/python3/cv2.cpython-36m-x86_64-linux-gnu.so /home/bbnc/.local/lib/python3.6/site-packages/
说明:寻找自己的site-packages路径的方法,python的第三方包都存在此处。
python3 -m pip install numpy
python3
import numpy
numpy.__path__
*在Ubuntu20.04上编译成功!!!*与ubuntu18.04的区别在于使用cmake-gui ../opencv可视化编译。
说明: 1. 在步骤1安装必要的包时,涉及jasperl的两个包未安装成功,但是后续好像也没有影响。
2. 可视化界面中的配置,依旧参考上述Configure中的内容。
3. CUDA_GENERATION=Kelper,解决GPU版本太高导致unsupport的错误。
4. 错误:CMake Error at cmake/OpenCVCompilerOptions.cmake:21 (else) 。解决方法:找到对应的文件,把21行注释掉即可。
5. 错误:CUDA_nppicom_LIBRARY。解决方法:进入opencv/cmake/FindCUDA.cmake, 把包含nppicom的地方注释或删除就可以,我记得有3个地方。
在build目录执行cmake-gui ../opencv 此处参考Configure中的配置,注意检查路径是否存在,比如20.04默认使用python3.8,检查numpy是否安装等等。(下图是为写博客重新打开的,与初次打开可能不同)
点击界面中的Configure,使用unix makefile编译,而不是gcc,尝试gcc失败了。如果使用gcc,选择Specify native compilers,opencv3.2支持gcc版本不能高于gcc-8。
点击Finish,再点击Generate。然后就可以回到终端的build目录执行make -j40和sudo make install。安装成功后测试一下。