opencv
参考:OpenCV各版本差异与演化,从1.x到4.0
OpenCV中文官方文档
install
# download opencv
cd ~/
git clone https://github.com/opencv/opencv.git
cd opencv
git clone https://github.com/opencv/opencv_contrib.git
mkdir build
cd build
# compiling release版
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D OPENCV_GENERATE_PKGCONFIG=ON ..
# compiling debug版
cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D OPENCV_GENERATE_PKGCONFIG=ON ..
# OpenCV4以上版本默认不使用pkg-config,该编译选项开启生成opencv.pc文件,支持pkg-config功能。
# Install the compiled library, perhaps to install the library to the system directory
sudo make -j32 #-j32表示32个线程并行编译
sudo make install
#可选步骤,推荐使用,免去同时使用多个版本的opencv之间相互影响
cp -rf /usr/local/include/opencv4 .
#更新pkg-config
sudo ldconfig
# Verification
pkg-config --modversion opencv4
python
>>> import cv2
>>> cv2.__version__
'4.5.4-dev'
>>> exit()
# 卸载
# 删掉opencv4.conf文件,再在你编译的文件夹(我的是release)下运行sudo make uinstall即可。
其它选项GPU加速
编译支持英伟达GPU加速的OpenCV:
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH= /路径/opencv_contrib/modules \
-D CUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so \
-D CUDA_ARCH_BIN=xx 这个需要去英伟达官网查询 \
-D CUDA_ARCH_PTX="" \
-D WITH_CUDA=ON \
-D WITH_TBB=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_V4L=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_NVCUVID=ON \
-D BUILD_opencv_cudacodec=OFF ..
#OpenCV4默认不生成.pc文件,OPENCV_GENERATE_PKGCONFIG=ON才会生成。其余就是CUDA的开启配置了。
uninstall
# 首先要找到当初安装opencv的build目录,进入该build目录执行卸载操作
sudo make uninstall
cd ..
rm -r build
#执行sudo make uninstall 报了错,暂时没有管它,直接删除了build安装目录。
# 清理/usr中所有opencv相关项
rm -r /usr/local/include/opencv2
rm -r /usr/local/include/opencv
rm -r /usr/include/opencv
rm -r /usr/include/opencv2
rm -r /usr/local/share/opencv
rm -r /usr/local/share/OpenCV
rm -r /usr/share/opencv
rm -r /usr/share/OpenCV
rm -r /usr/local/bin/opencv*
rm -r /usr/local/lib/libopencv*
# 上述文件夹在实际中有部分找不到。
$ cd /usr
$ find . -name "*opencv*" | xargs sudo rm -rf
# 移除python相关
$ apt-get remove-doc opencv-data python-opencv
# 检查opencv是否卸载干净
pkg-config opencv --libs
pkg-config opencv --modversion
# 如果是apt install方式,需要如下方式卸载干净
sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4
sudo ldconfig
libopencv using
# terminate check
pkg-config --modversion opencv4
makefile文件中如下调用,此方法可以正常调用opencv,但是单步调试时不能看到opencv源码
INCLUDES += $(shell pkg-config --cflags opencv4)
LIBS = $(shell pkg-config --libs opencv4)
推荐保留build文件夹,可以单步调试时阅读opencv源码,按照如下方法配置opencv的makefile
INC_PATH += -I/home/xxx/opencv/build/opencv4
LIB_PATH := -L/usr/local/lib
LIB_PATH += -L/home/xxx/opencv/build/lib
LIBS := -lm
LIBS += -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_wechat_qrcode -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_dnn -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core