この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
1 はじめに
CX事業本部の平内(SIN)です。
Jetson Nanoでは、JETSON NANO DEVELOPER KITが公開されており、イメージは、通常これを利用します。
OpenCVは、最新のJetPack 4.4でVer4.1.1がセットアップされており、そのまま利用可能です。
しかし、opencv_contribのaruco「AR(Augmented Reality)マーカー検出機能」https://github.com/opencv/opencv_contrib/tree/3.3.0/modules/arucoについては、含まれておらず、利用できません。
nvidia@nvidia-desktop:~$ python3
Python 3.6.9 (default, Jul 17 2020, 12:50:27)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.1.1
>>> cv2.aruco
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'cv2' has no attribute 'aruco'
>>>
本記事は、Jetson Nanoで、arucoモジュールを組み込んで、再コンパイルした際のメモです。
2 OpenCV 4.1.1のコンパイル
作業については、以下のページを参考にさせて頂きました。
https://qiita.com/daisuzu_/items/f17d365a895a599f832f
opencv本体と、opencv_contribのコードをダウンロードし、本体のコードにmodules/arucoを追加してコンパイルしました。
$ wget https://github.com/opencv/opencv/archive/4.1.1.zip -O opencv-4.1.1.zip
$ wget https://github.com/opencv/opencv_contrib/archive/4.1.1.zip -O opencv_contrib-4.1.1.zip
$ unzip opencv-4.1.1.zip
$ unzip opencv_contrib-4.1.1.zip
$ cp -r ./opencv_contrib-4.1.1/modules/aruco ./opencv-4.1.1/modules/
$ cp -r ./opencv_contrib-4.1.1/modules/cudev ./opencv-4.1.1/modules/
$ cd opencv-4.1.1/
$ mkdir build
$ cd build
cmakeのスイッチは、以下のとおりです。
$ cmake -D CUDA_HOST_COMPILER=/usr/bin/gcc-7 -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" -D CUDA_VERSION="10000" -DWITH_NVCUVID=OFF -DENABLE_CCACHE=OFF -DEIGEN_INCLUDE_PATH=/usr/include/eigen3 -D HAVE_CUDA=1 -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -DWITH_FAST_MATH=OFF -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -DPYTHON3_EXECUTABLE=/usr/bin/python3 -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D WITH_CUBLAS=ON -D LAPACK_CBLAS_H=/usr/include/aarch64-linux-gnu/cblas.h ..
cmakeの出力で、arucoモジュールが有効になっていることが確認できます。
-- OpenCV modules:
-- To be built: aruco calib3d core cudev dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio
makeとinstall
$ make -j4
$ sudo make install
3 確認
getBuildInformation()で、組み込まれたモジュールに、arucoが確認できます。
$ python3
Python 3.6.9 (default, Jul 17 2020, 12:50:27)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.getBuildInformation())
General configuration for OpenCV 4.1.1 =====================================
・・・(略)
OpenCV modules:
To be built: aruco calib3d core cudev dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio
また、以下のように、エラー無く利用できている事が確認できます。
>>> aruco = cv2.aruco
>>> dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)
>>>
4 最後に
JetPackにセットアップされているOPenCVで、opencv_contribのモジュールを利用する際のメモとして、記録させて頂きました。