安裝所須要的工具和包:
sudo apt-get install build-essential pkgconfig
sudo apt-get install cmake git gcc
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
安裝依賴庫ffmpeg
cd ffmpeg/
./configure --disable-yasm --enable-shared --enable-pic --prefix=/usr/local/ffmpeg 生成可鏈接庫,--prefix設置安裝路徑
make
make install 開始安裝
vim /etc/profile 打開環境變量文檔
在文尾輸入:
export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib #添加動態庫路徑
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig:/usr/loal/lib
ffmpeg -version 若是顯示版本信息,就證實ffmpeg已經成功安裝了
首先檢測你的環境是否配置成功。
pkg-config ffmpeg --libs --cflags查看ffmpeg連接庫是否配置好了若是沒配置好也彆着急,繼續往下看)
pkg-config opencv --libs --cflags查看opencv連接庫和頭文件配置
若是沒有打印程序的連接庫路徑,說明連接庫沒有完整配置好
這個時候首進入ffmpeg文件目錄(不是源碼目錄,是軟件安裝目錄/usr/local/ffmpeg/)/lib的目錄的
全部文件複製到/usr/local/lib目錄下;而後打開ffmpeg/lib/的裏有個pkgconfig,
把裏頭的文件所有複製到/usr/local/lib/pkgconfig裏頭
編譯源碼:
1.cd opencv-3.3.0
2.mkdir build
3.cd build
4.cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 編譯經過
4.1.cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/firstuser/depend/opencv-3.3.0/opencv_contrib-3.3.0/modules/ -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..
4.2.cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..
5.make -j4 多線程
6.sudo make install
修改ippicv下載路徑:
vim /home/firstuser/depend/opencv-3.3.0/3rdparty/ippicv/ippicv.cmake #根據本身的路徑填寫
將47行的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
改成手動下載的文件的本地路徑:
"file:///home/firstuser/下載/" (根據本身的路徑填寫)
到了下載ippicv那一步時會自動從本地下載。
錯誤及解決方法:
0.error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
在/opt/opencv/opencv-3.3.0/modules/videoio/src/cap_ffmpeg_impl.hpp 裏最頂端添加
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020
1.-- No package 'gtk+-3.0' found
sudo apt-get install libgtk-3-dev
2.-- No package 'gstreamer-base-1.0' found
-- No package 'gstreamer-video-1.0' found
-- No package 'gstreamer-app-1.0' found
-- No package 'gstreamer-riff-1.0' found
-- No package 'gstreamer-pbutils-1.0' found
sudo apt-get -y install libgstreamer-plugins-base1.0-dev
sudo apt-get -y install libgstreamer1.0-dev
3.-- No package 'libavresample' found
-- No package 'libgphoto2' found
sudo apt-get -y install libavresample-dev
sudo apt-get -y install libgphoto2-dev
4.-- Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
-- Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
-- Could NOT find Atlas (missing: Atlas_CBLAS_INCLUDE_DIR Atlas_CLAPACK_INCLUDE_DIR Atlas_CBLAS_LIBRARY Atlas_BLAS_LIBRARY Atlas_LAPACK_LIBRARY)
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
-- Could NOT find Matlab (missing: MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN)
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
sudo apt-get install libopenblas-dev
5.-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
sudo apt-get install doxygen
6.-- Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
sudo mkdir /usr/local/java
sudo tar zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/java
sudo ln -s /usr/local/java/jdk1.8.0_151/ /usr/local/java/latest
sudo vim /etc/profile
export JAVA_HOME=/usr/local/java/latest
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
cd ~/opencv-3.3.0/build
make clean
從新編譯:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 編譯經過
make -j8
make install
附3.4版本以上有該問題:
/usr/bin/ld: warning: libswresample.so.3, needed by //usr/local/ffmpeg/lib/libavcodec.so.58, not found (try using -rpath or -rpath-link)
//usr/local/ffmpeg/lib/libavcodec.so.58:對‘swr_close@LIBSWRESAMPLE_3’未定義的引用
解決方法:
https://blog.csdn.net/guo_lei_lamant/article/details/82561312
vim /etc/ld.so.conf.d
/usr/local/ffmpeg/lib
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------java
重裝新版本:先卸載舊版本
1.刪除安裝文件
cd /home/***/opencv/build
sudo make uninstall
cd ..
sudo rm -r build
2.刪除全部和opencv相關文件
sudo rm -r /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2
cd /usr
find . -name "*opencv*" | xargs sudo rm -rf
3.刪除代碼包
cd /home/***
chmod a+x /home/***/opencv
rm -r /home/***/opencv
4.
cd ~/opencv-3.4.6
error while loading shared libraries: libopencv_core.so.3.4: cannot open shared object file: No such file or directory
1.打開路徑:/etc/ld.so.conf.d
2.建立文件:OpenCV.conf文件
3.添加本身opencv的lib路徑 ldconfig (一般爲/usr/local/lib)
error: ./TopCamDetDL.so: undefined symbol: _ZN2cv3dnn23experimental_dnn_34_v143NetC1Evpython
opencv版本問題
從新編譯:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 編譯經過
make -j8
make install linux