OpenCVコンパイルと Python Darknet - JETSON NANO 開発者キット その4
Darknet の Python スクリプトを、WEBカメラで試したい。
OpenCV
Jetson pack には、opencv 3.3 が有効化されているけれども、Pythonから呼び出す方法がわからなかったので、コンパイルしました。
準備
デフォルトの設定のままだと、RAMが不足するらしい。
スワップを作っておきます。
JETSON NANO 開発者キット を試す その3 - 機械学習備忘録
で、起動時に 6G のスワップメモリを確保しています。
自動コンパイル&インストールスクリプト
JEP/script at master · AastaNV/JEP · GitHub
こちから、 install_opencv4.0.0_Nano.sh
を取得します。
改変
Version 4.0 から 4.1へ変更し、PKGCONFIG
を吐き出すようにします。
改変作業
version の 4.0 の文字列を全て 4.1 に変更。
make の引数に、
-D OPENCV_GENERATE_PKGCONFIG=ON
を追加。
そして、
$ mkdir opencv $ sh install_opencv4.0.0_Nano.sh opencv ... $ python3 -c "import cv2; print (cv2.__version__)" 4.1.0
4時間ほどかかりました。
Darknet
インストール
通常パッケージではなく、こっちを使う。
こことの関連は、調査中
https://github.com/pjreddie/darknet
pkg-config --modversion opencv
ldd darknet
などすると、見当たらないので、.bashrc
に path を追加し、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
ファイル名を合わせる。(シンボリックリンクの方が良いかも)
$ cd /usr/local/lib/pkgconfig/ $ sudo cp opencv4.pc opencv.pc
Python から Darknet を使用する
めも (要整理)
疑問
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
しても、
cap.get(cap.set(cv2.CAP_PROP_FRAME_WIDTH) すると、デフォルト値から変わっていない。
だが、
ret, frame = cap.read() print( frame.shape )
すると、ちゃんと変わっている。なんだろうか。