- jetson XAVIER NXにpython-OpenCV(CV2)をインストールする方法
- OpenCV(CV2)のバージョン確認方法
以下環境で動作確認を行いました。
jetson XAVIER NXにpython-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の仮想環境の構築についてこちらの記事を参考にしてみてください。

本当はpipでインストールしたかったけどできなかった
jetson上ではpipを使ったopencv(cv2)のインストールはできませんでした。
ARM用のopencv-python(およびopencv-python-headless)ホイールがないことが原因らしいです。
そのため、今回紹介したビルドでのインストールになってしまいました。

まとめ
jetson XAVIER NXにOpenCV(CV2)をインストールする方法を紹介しました。
pipではインストールできず自分でビルドしないといけないので、時間も手間もかかりますが実施してみてください。
コメント
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を移動させてみてください。