【jetson-xavier-nx】python-OpenCV(CV2)のインストール方法

スポンサーリンク
opencvAIを作ってみる
この記事を読んで分かること
  • jetson XAVIER NXにpython-OpenCV(CV2)をインストールする方法
  • OpenCV(CV2)のバージョン確認方法

 

以下環境で動作確認を行いました。

構築環境

  • jetson XAVIER NX (jetpack4.4-b144)
  • python3.6.9
  • OpenCV4.2

jetson XAVIER NXpython-OpenCV(CV2)のインストールはpipではできないので、環境構築はソースコードのビルドを行います。

python-OpenCV(CV2)のインストール

こちらのソースコードを参考にしています。

install-opencv.shをそのまま実行でインストールできました。

バージョンの指定

openCVのバージョンは4.2.0に変更しました。

OPENCV_VERSION='4.2.0' # Version to be installed
OPENCV_CONTRIB='YES' # Install OpenCV's extra modules (YES/NO)

 

apt-getの最新化

apt-getの最新化をします。

sudo apt-get -y update

 

依存パッケージのインストール

python-OpenCV(CV2)のインストールに必要なパッケージをインストールします。

# Build tools:
sudo apt-get install -y build-essential cmake

# GUI (if you want GTK, change 'qt5-default' to 'libgtkglext1-dev' and remove '-DWITH_QT=ON'):
sudo apt-get install -y qt5-default libvtk6-dev

# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev \
libopenexr-dev libgdal-dev

# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev \
libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm \
libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev

# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev

# Python:
sudo apt-get install -y python-dev python-tk pylint python-numpy \
python3-dev python3-tk pylint3 python3-numpy flake8

# Java:
sudo apt-get install -y ant default-jdk

# Documentation and other:
sudo apt-get install -y doxygen unzip wget

 

python-OpenCV(CV2)本体のインストール

ようやく事前準備が終わったのでpython-OpenCV(CV2)のインストールを開始します。

ビルドには時間がかかるので、インストールが完了するまで待ちます。

私の環境では2時間位かかりました。

wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip
unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip
mv opencv-${OPENCV_VERSION} OpenCV

if [ $OPENCV_CONTRIB = 'YES' ]; then
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip
unzip ${OPENCV_VERSION}.zip && rm ${OPENCV_VERSION}.zip
mv opencv_contrib-${OPENCV_VERSION} opencv_contrib
mv opencv_contrib OpenCV
fi

cd OpenCV && mkdir build && cd build

if [ $OPENCV_CONTRIB = 'NO' ]; then
cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON \
-DWITH_XINE=ON -DENABLE_PRECOMPILED_HEADERS=OFF ..
fi

if [ $OPENCV_CONTRIB = 'YES' ]; then
cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON \
-DWITH_XINE=ON -DENABLE_PRECOMPILED_HEADERS=OFF \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
fi

make -j8
sudo make install
sudo ldconfig

 

python-OpenCV(CV2)の動作確認

python-OpenCV(CV2)のバージョン確認

コンソールで以下のコマンドを実行するとpython-OpenCV(CV2)のバージョンが表示されます。

python3 -c "import cv2; print( cv2.__version__ )"

バージョン4.2がインストールされていることがわかりました。

4.2.0

 

上手くimportができない場合

PYTHONPATHを通す

私の環境では、パスが通っていなかったのでimportできませんでした。

環境変数を追加したら正常に動作しました。

export PYTHONPATH="opencvのパス":$PYTHONPATH"

PYTHONPATHの確認

python3
>>>import sys
>>>print(sys.path)

通っているパスの確認ができます。

 

パスさえ通せば、pythonの仮想環境でも動作を確認できました。

pythonの仮想環境の構築についてこちらの記事を参考にしてみてください。

【virtualenv】pythonの仮想環境の作り方
この記事は以下の実行環境での順になります。 実行環境 Ubuntu18.04 python3 virtualenvを使ったpythonの仮想環境の作り方 とりあえずインストール~環境...

本当はpipでインストールしたかったけどできなかった

jetson上ではpipを使ったopencv(cv2)のインストールはできませんでした。

ARM用のopencv-python(およびopencv-python-headless)ホイールがないことが原因らしいです。

そのため、今回紹介したビルドでのインストールになってしまいました。

opencv-pythonとの依存関係があるライブラリはpipではインストールできなくなってしまいます。

 

ロボくん
ロボくん
opencvが依存したライブラリを入れたい場合には、それぞれのライブラリをビルドしていく方法しか今の所対処方法はなさそうです…

 

まとめ

jetson XAVIER NXOpenCV(CV2)をインストールする方法を紹介しました。

pipではインストールできず自分でビルドしないといけないので、時間も手間もかかりますが実施してみてください。

コメント

  1. サト吉 より:

    Jetson Xavierで産業用カメラを動かしたく勉強させていただきております。

    $ python3 -c “import cv2; print( cv2.__version__ )”
    Illegal instruction (コアダンプ)
    と出たので
    ○PYTHONPATHを通す の項で
    export PYTHONPATH=”opencvのパス”:$PYTHONPATH”
    と実施しようとしておりますが、この”opencvのパス”はどの部分のことなのでしょうか?(どのように調べればよいのでしょうか?)

    それとも、次項で○PYTHONPATHの確認にある
    >>> import sys
    >>> print(sys.path)
    [”, ‘/usr/lib/python36.zip’, ‘/usr/lib/python3.6’, ‘/usr/lib/python3.6/lib-dynload’, ‘/home/****/tf/env/lib/python3.6/site-packages’]
    の[]間のことなのでしょうか?
    大変恐縮ながら、教えていただけないでしょうか?

    • シャイニングシャイニング より:

      ”opencvのパス”はpython-OpenCV(CV2)本体のインストールを行ったディレクトリとなります。
      環境変数PYTHONPATHにディレクトリの絶対パスを追加するか、すでにパスの通っているディレクトリにopencvを移動させてみてください。

タイトルとURLをコピーしました