ubuntu 16.04でopencv 2とopencv 3が共存

5963 ワード

OpenCV 2系と3系は単純に3系が2系より新しいのではなく、2系より良い関係で、2つのバージョンは主にインタフェースが異なり、2つのバージョンは更新を維持しています.2つのバージョンを同時にインストールするには、使用時にCmakeLists.txtで呼び出す必要がある場合に区別する必要があります.
Opencvバージョンpkg-config --modversion opencvの表示
インストールパッケージをダウンロードして、unzip解凍して、先に依存項目をインストールして、依存項目は参考にすることができます(https://blog.csdn.net/xbs150/article/details/77840786) sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff5-dev libopenexr-dev libtbb-dev libgstreamer-plugins-base1.0-dev libjasper-dev
上github/opencvの下にパッケージをインストールし、第三者ライブラリが解凍したインストールパッケージの下にmkdir build && cd buildターゲットインストールフォルダsudo mkdir /usr/local/bin/opencv-2.4.13.6を作成します.
cmakeとCUDAの影響を避けるsudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_CUBLAS=0 -D WITH_CUDA=0 -D WITH_CUFFT=0 -D CMAKE_CXX_STANDARD=11 -D CMAKE_INSTALL_PREFIX=/usr/local/bin/opencv-3.4.10 ..-D WITH_TBB=ON -D WITH_V 4 L=ONまたはCUDA対応コードsudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_CUBLAS=1 -D WITH_CUDA=ON -D WITH_CUFFT=1 -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D BUILD_TIFF=ON -D WITH_X11=ON -D WITH_GSTREAMER=ON -D WITH_IPP=OFF -D BUILD_opencv_cudalegacy=OFF -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-9.0 -D CUDNN_LIBRARY=/usr/local/cuda-9.0/lib64 -D CUDNN_INCLUDE_DIR=/usr/local/cuda-9.0/include -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.5/modules -D CMAKE_INSTALL_PREFIX=/usr/local/bin/opencv-3.4.5 ..pythonバージョンを指定し、多くのインストール項目を追加することもできます(不明な意味)
cmake -D CMAKE_BUILD_TYPE=RELEASE -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_EXAMPLES=ON -D WITH_FFMPEG=ON -D WITH_LIBV4L=ON -D WITH_GTK=ON -D WITH_OPENGL=ON -D WITH_OPENCL=ON -D WITH_OPENMP=ON -D WITH_ZLIB=ON -D BUILD_PNG=ON -D BUILD_JPEG=ON -D BUILD_TIFF=ON -D WITH_CUDA=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_LAPACK=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/bin/opencv-3.4.6 -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D PYTHON3_EXECUTABLE=$(which python) -DPYTHON3_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..

gstreamerリファレンスが欠けている場合(https://answers.opencv.org/question/95734/cmake-not-picking-gstreamer-on-ubuntu/)その他参考にすることができます(https://www.cnblogs.com/yuanlibin/p/7735274.html) (http://www.zsxrpd.com/blog/?p=671)(https://blog.csdn.net/djstavaV/article/details/86884165)
-j 4は4つのスレッドを開くことを表し、速度を速めるsudo make -j4 sudo make install環境変数vim ~/.bashrcを修正する必要がありますexport PKG_CONFIG_PATH=/usr/local/bin/opencv-2.4.13.6/lib/pkgconfig${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}export LD_LIBRARY_PATH=/usr/local/bin/opencv-2.4.13.6/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}を追加すると、使用コマンドは2.4 pkg-config --modversion opencvになります.
まず対応する経路を明らかにし、CMakeList.txtで対応する設定を行う
set(OpenCV_DIR /usr/local/bin/opencv-3.4.5/share/OpenCV)
find_package(OpenCV 3.4 REQUIRED)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS} /usr/local/bin/opencv-3.4.5/include)
link_directories(${OpenCV_LIBRARY_DIRS} /usr/local/bin/opencv-3.4.5/lib))

デフォルトのopencv 2を使用して戻りたい場合はfind_Package(OpenCV 3.4 REQUIRD)をfind_に変更Package(OpenCV REQUIRD)でいいです.このコードの上の行と下の2行を注釈すればいいです.
.soライブラリがありません
.soライブラリがない場合はldd mainを使用して、どのライブラリが欠けているかを確認します.locateに対応するライブラリ名を確認し、vim /etc/ld.so.conf.d/opencv.confを使用してライブラリのパス(/lib)を追加します.その後、sudo ldconfigはコンパイルに失敗した場合、ライブラリが間違っている可能性があります.次のコマンドを使用します.
g++ -o test_1 test_1.cpp `pkg-config opencv --cflags --libs`

簡単な方法(推奨されていません)
pipを使用してopencv 3をインストールします(pipはopencv 2がありません)pip install opencv-python==3.4.5.20 apt-getを使用してopencv 2をインストールします:
  • Ubuntu 14.04と16.04の下で一般的にsudo apt-get install libopencv-devを実行して2.4シリーズOpenCVをインストールし、公式サイトで3系OpenCVをダウンロードしてインストールします.
  • Ubuntu 18.04でsudo apt-get install libopencv-devにインストールされているOpenCVバージョンは3.2で、いくつかの違いがあります.

  • apt-getを使用してopencv 2対応のライブラリlibをインストール/usr/lib/x 86_64-linux-gnu/、ヘッダファイルincludeは/usr/include/opencvおよび/usr/local/include/opencv 2において、対応するCMakeList.txtで修正する必要がある.
    pip出力環境パッケージ要件requirements.txt
    pip freeze | grep -v "pkg-resources" > requirements.txt
    

    Opencv 2.xとopencv 3.xの違い
  • cv.CV_RGS 2 LAB変COLOR_RGB2Lab
  • import cv2 as cv
    cv.cv.CV_RGB2Lab   # opencv2
    cv.COLOR_RGB2Lab     # opencv3
    
  • cv 2.cvBoxPoints変cv 2.boxPoints
  • box = np.array(cv2.cv.BoxPoints(rect))  # opencv2
    box = np.array(cv2.boxPoints(rect))       # opencv3
    
  • cv2.cv.CV_RETR_CCOMP変cv 2.RETR_CCOMP
  • mode=cv2.cv.CV_RETR_CCOMP,   # opencv2
    mode=cv2.RETR_CCOMP,            # opencv3
    
  • cv2.cv.CV_CHAIN_APPROX_SIMPLE変cv 2.CHAIN_APPROX_SIMPLE
  • method=cv2.cv.CV_CHAIN_APPROX_SIMPLE   # opencv2
    method=cv2.CHAIN_APPROX_SIMPLE            # opencv3
    

    cv 2拡張ライブラリはOpenCV 2.x API用に作成され、直接NumPyの配列オブジェクトを用いて画像を表し、pyopencvに比べて配列とMatオブジェクトの間で相互変換する必要はなくなりました.
    cv 2の関数は直接Numpy配列を操作し、cv 2読取画像は配列、array=cv 2.imread()(1)cv読取画像:①iplimage = cv.LoadImage()cvmat = cv.LoadImageM()(2)array、iplimage、cvmat変換array---->cvmat: cv.fromarray(array)cvmat----> array:np.asarray(cvamt)cvmat------ iplimage:cv.GetImage(cvmat) iplimage---->cvmat: cvmat: iplimage---->cvmat: iplimage:iplimage---->cv mage[:],またはcv.GetMat(iplimage)
    加速画像decode
  • jpeg 4 pyライブラリを使用できます.libjpeg-turbo
  • が内部パッケージされています.
  • opencvを手動でコンパイルし、libjpegライブラリをlibjpeg-turbo
  • に置き換えます.
  • CUDAをサポートするopencvをコンパイルし、cudaを用いてピクチャ処理
  • を行う