1趴梢、下載OpenCV3.4.1
OpenCV3.4.1包括穩(wěn)定功能模塊版本opencv3.4.1和未穩(wěn)定功能模塊版本opencv_contrib3.4.1肮街,在opencv3.4.1中沉眶,主要增強了dnn模塊挑豌,特別是添加了對Faster R-CNN的支持闽瓢,但有些算法還沒有加進來金度,比如DPM,KCF等珊泳,因此本次編譯加上了opencv_contrib3.4.1鲁冯。可以自行去OpenCV github上打包下載opencv3.4.1和opencv_contrib3.4.1色查,也可以通過如下命令下載壓縮包薯演,解壓后將兩個文件夾放在同一目錄下:
wget https://github.com/opencv/opencv/archive/3.4.1.zip
wget https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
2、安裝依賴
官方給出的依賴包如下:
- GCC 4.4.x or later
- CMake 2.6 or higher
- Git
- GTK+2.x or higher, including headers (libgtk2.0-dev) # 控制opencv GUI
- pkg-config
- Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
- ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
- [optional] libtbb2 libtbb-dev
- [optional] libdc1394 2.x
- [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 處理圖像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 處理視頻所需的包
sudo apt-get install libatlas-base-dev gfortran # 優(yōu)化opencv功能
sudo apt-get install ffmpeg
3秧了、配置編譯opencv
cd opencv-3.4.1
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.1 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules -D WITH_CUDA=ON -D WITH_CUBLAS=1 -D CUDA_ARCH_BIN="6.1" -D CUDA_ARCH_PTX="6.1" -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_V4L=ON WITH_NVCUVID=ON ..
make
sudo make install
sudo sh -c 'echo "/usr/local/opencv3.4.1/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
注意
1.CMAKE_INSTALL_PREFIX默認目錄為/usr/local跨扮,可自行選擇,只需要在更新環(huán)境變量的時候?qū)木托小?br>
2.CUDA_ARCH_BIN和CUDA_ARCH_PTX這里是指的顯卡計算能力,GeForce GTX 1080 Ti的計算能力為6.1衡创,其他型號可以自行上NVIDIA官網(wǎng)查詢對應版本:
https://developer.nvidia.com/cuda-gpus
3.cmake的時候帝嗡,有些contrib模塊編譯時需要的文件可能下載不下來,具體信息可以到build目錄下CMakeDownloadLog.txt查看璃氢,去對應網(wǎng)址下載好文件放到opencv-3.4.1/.cache目錄下(注意這是個隱藏文件)的對應文件夾里哟玷,并重命名(加上前面的一串字符,注意要一一對應)拔莱,再重新cmake碗降。這里我將自己下載的缺少的文件(data,ippicv塘秦,tiny_dnn讼渊,dnn_face_detector,xfeatures2d已經(jīng)重命名好)放到網(wǎng)盤上:
https://pan.baidu.com/s/1MSZIrVzl38Xj6rRRzfA0Kg
4尊剔、編譯時遇到的一些錯誤提示
1.opencv_cudawarping和libopencv_cudafilter.so
[ 54%] Linking CXX shared library ../../lib/libopencv_cudawarping.so
[ 54%] Built target opencv_cudawarping
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
## libopencv_cudafilter.so
[ 54%] Linking CXX shared library ../../lib/libopencv_cudafilters.so
[ 54%] Built target opencv_cudafilters
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
這里是我在用到make -j16或make -j8時碰到的爪幻,最后編譯成功那次我只用了make
參考鏈接:https://devtalk.nvidia.com/default/topic/1016293/jetson-tx1/error-while-compiling-opencv-on-jetson-tx1/
2.undefined reference to 'inflateValidate@ZLIB_1.2.9'
//home/mmap/anaconda3/lib/libpng16.so.16:undefined reference to'inflateValidate@ZLIB_1.2.9'
collect2: error: ld returned 1 exit status
每次將make -j8 改成make的時候就提示這個錯誤,不知道為什么一開始不提示须误,(可能上面的錯誤主要原因也是這個挨稿,可以試試解決這個問題后用make -j4 或 make -j8)這里是cmake的時候zlib和libpng索引到anaconda下面的庫文件了,而anaconda下的這兩個庫文件版本不知道是太新了還是有沖突京痢,最后直接conda卸載這兩個庫文件奶甘,讓cmake的時候索引到系統(tǒng)默認版本(/usr/local/lib目錄下)