ubuntu 16.04でopencv 2とopencv 3が共存
5963 ワード
OpenCV 2系と3系は単純に3系が2系より新しいのではなく、2系より良い関係で、2つのバージョンは主にインタフェースが異なり、2つのバージョンは更新を維持しています.2つのバージョンを同時にインストールするには、使用時にCmakeLists.txtで呼び出す必要がある場合に区別する必要があります.
Opencvバージョン
インストールパッケージをダウンロードして、unzip解凍して、先に依存項目をインストールして、依存項目は参考にすることができます(https://blog.csdn.net/xbs150/article/details/77840786)
上github/opencvの下にパッケージをインストールし、第三者ライブラリが解凍したインストールパッケージの下に
cmakeとCUDAの影響を避ける
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つのスレッドを開くことを表し、速度を速める
まず対応する経路を明らかにし、CMakeList.txtで対応する設定を行う
デフォルトのopencv 2を使用して戻りたい場合はfind_Package(OpenCV 3.4 REQUIRD)をfind_に変更Package(OpenCV REQUIRD)でいいです.このコードの上の行と下の2行を注釈すればいいです.
.soライブラリがありません
.soライブラリがない場合は
簡単な方法(推奨されていません)
pipを使用してopencv 3をインストールします(pipはopencv 2がありません) Ubuntu 14.04と16.04の下で一般的に Ubuntu 18.04で
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
Opencv 2.xとopencv 3.xの違い cv.CV_RGS 2 LAB変COLOR_RGB2Lab cv 2.cvBoxPoints変cv 2.boxPoints cv2.cv.CV_RETR_CCOMP変cv 2.RETR_CCOMP cv2.cv.CV_CHAIN_APPROX_SIMPLE変cv 2.CHAIN_APPROX_SIMPLE
cv 2拡張ライブラリはOpenCV 2.x API用に作成され、直接NumPyの配列オブジェクトを用いて画像を表し、pyopencvに比べて配列とMatオブジェクトの間で相互変換する必要はなくなりました.
cv 2の関数は直接Numpy配列を操作し、cv 2読取画像は配列、array=cv 2.imread()(1)cv読取画像:①
加速画像decode jpeg 4 pyライブラリを使用できます.libjpeg-turbo が内部パッケージされています. opencvを手動でコンパイルし、libjpegライブラリをlibjpeg-turbo に置き換えます. CUDAをサポートするopencvをコンパイルし、cudaを用いてピクチャ処理 を行う
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をインストールします:sudo apt-get install libopencv-dev
を実行して2.4シリーズOpenCVをインストールし、公式サイトで3系OpenCVをダウンロードしてインストールします.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の違い
import cv2 as cv
cv.cv.CV_RGB2Lab # opencv2
cv.COLOR_RGB2Lab # opencv3
box = np.array(cv2.cv.BoxPoints(rect)) # opencv2
box = np.array(cv2.boxPoints(rect)) # opencv3
mode=cv2.cv.CV_RETR_CCOMP, # opencv2
mode=cv2.RETR_CCOMP, # opencv3
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