私的AI研究会 > OpenCV
$ sudo apt update ヒット:1 http://ftp.jaist.ac.jp/raspbian buster InRelease ヒット:2 http://archive.raspberrypi.org/debian buster InRelease パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージはすべて最新です。
$ sudo apt install libopencv-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: autoconf automake autotools-dev gdal-data gfortran gfortran-8 libaec0 libarmadillo9 libarpack2 libavcodec-dev libavformat-dev libavresample-dev libavutil-dev libcaf-openmpi-3 libcharls2 libcoarrays-dev libcoarrays-openmpi-dev libdap25 libdapclient6v5 libdapserver7v5 libdc1394-22-dev libepsilon1 libevent-core-2.1-6 libevent-pthreads-2.1-6 libexif-dev ; : libtesseract4 libtiff-dev libtiffxx5 libtool liburiparser1 libvtk6.3 libxerces-c3.2 m4 mariadb-common mysql-common ocl-icd-libopencl1 odbcinst odbcinst1debian2 opencv-data openmpi-bin openmpi-common proj-bin proj-data アップグレード: 0 個、新規インストール: 140 個、削除: 1 個、保留: 0 個。 96.7 MB のアーカイブを取得する必要があります。 この操作後に追加で 397 MB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://ftp.jaist.ac.jp/raspbian buster/main armhf libsigsegv2 armhf 2.12-2 [32.3 kB] 取得:2 http://ftp.jaist.ac.jp/raspbian buster/main armhf m4 armhf 1.4.18-2 [185 kB] : : libopencv-dev (3.2.0+dfsg-6) を設定しています ... install-info (6.5.0.dfsg.1-4+b1) のトリガを処理しています ... libc-bin (2.28-10+rpi1) のトリガを処理しています ... man-db (2.8.5-2) のトリガを処理しています ...(参考) 下記 OpenCV4 インストール後に入れても問題なかった。
$ pip3 install opencv-python Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting opencv-python Downloading https://files.pythonhosted.org/packages/77/f5/49f034f8d109efcf9b7e98fbc051878b83b2f02a1c73f92bbd37f317288e/opencv-python-4.4.0.42.tar.gz (88.9MB) 100% |████████████████████████████████| 88.9MB 5.0kB/s Installing build dependencies ... done Requirement already satisfied: numpy>=1.14.5 in /usr/lib/python3/dist-packages (from opencv-python) (1.16.2) Building wheels for collected packages: opencv-python Running setup.py bdist_wheel for opencv-python ... done Stored in directory: /home/pi/.cache/pip/wheels/62/23/5f/bb6a7cb3d2e5520cff9ebea1a3d6542b4932cc8ccb342435d2 Successfully built opencv-python Installing collected packages: opencv-python Successfully installed opencv-python-4.4.0.42(参考) インストールに1時間ほどかかった。
$ python3 Python 3.7.3 (default, Jul 25 2020, 13:03:44) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '4.4.0' >>> exit()※ エラーが出ていなければOpenCVが使えるようになっている。
OpenCV による画像処理と対象物追跡
$ sudo ./streamer-stop.sh 1010 mjpg_streamer stopped停止の確認。
$ ps ax |grep mjpg_streamer 3523 pts/0 S+ 0:00 grep --color=auto mjpg_streamer
$ cd ~/Programs/opencv $ cp -rp ~/bluebacks/raspi2-sample bb2 $ cd bb2 $ ls bb2 bb2-04-03-lcd-practice.py bb2-07-01-preview.py bb2-07-09-tracking-face-pca9685.py bb2-07-17-tracking-circle-pca9685.py bb2-02-01-led.py bb2-04-04-lcd-4modes.py bb2-07-02-binary.py bb2-07-10-preview.py bb2-07-18-tracking-face-pca9685.py bb2-03-01-3led.py bb2-04-05-lcd-3modes.py bb2-07-03-cannyedge.py bb2-07-11-binary.py bb2-08-01-zero-pca9685.py bb2-03-02-dice.py bb2-05-01-TV.py bb2-07-04-circle.py bb2-07-12-cannyedge.py bb2-08-02-6legs-pca9685.py bb2-03-03-dice-switch.py bb2-06-01-zero.py bb2-07-05-face.py bb2-07-13-circle.py bb2-08-03-6legs-sw.py bb2-03-04-dice-switch-delay.py bb2-06-02-pantilt.py bb2-07-06-tracking-circle.py bb2-07-14-face.py bb2-08-04-lcd.py bb2-04-01-weather.py bb2-06-03-stream.sh bb2-07-07-tracking-face.py bb2-07-15-tracking-circle.py bb2-08-05-shutdown.py bb2-04-02-forcast.py bb2-06-04-pantilt-pca9685.py bb2-07-08-tracking-circle-pca9685.py bb2-07-16-tracking-face.py
$ python3 bb2-07-01-preview.py Traceback (most recent call last): File "bb2-07-01-preview.py", line 15, in <module> cv2.imshow('frame', stream.array) cv2.error: OpenCV(4.4.0) /tmp/pip-install-7xo2na5y/opencv-python/opencv/modules/highgui/src/window.cpp:651: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'エラーのない方のサンプルで実行。
$ python3 bb2-07-10-preview.py pygame 1.9.4.post1 Hello from the pygame community. https://www.pygame.org/contribute.html
pygame.init() size=(640,480)
$ cp bb2-07-10-preview.py preview.py $ vi preview.py
$ python3 preview.py
$ cp bb2-07-11-binary.py binary.py $ vi binary.py
$ python3 binary.py
$ vi binary.py
$ python3 binary.py
$ cp bb2-07-12-cannyedge.py cannyedge.py $ vi cannyedge.py
$ python3 cannyedge.py
$ python3 bb2-07-13-circle.py pygame 1.9.4.post1 Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last): File "bb2-07-13-circle.py", line 50, in <module> cv2.circle(stream.array, (c[0],c[1]), c[2], (0,0,255), 2) TypeError: Argument 'radius' is required to be an integer
$ cp bb2-07-13-circle.py circle.py $ vi circle.py #cv2.circle(stream.array, (c[0],c[1]), c[2], (0,0,255), 2) cv2.circle(stream.array, (c[0],c[1]), int(c[2]), (0,0,255), 2)
$ python3 circle.py
$ python3 bb2-07-14-face.py pygame 1.9.4.post1 Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last): File "bb2-07-14-face.py", line 35, in <module> facerect = cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=2, minSize=(30,30), maxSize=(150,150)) cv2.error: OpenCV(4.4.0) /tmp/pip-install-7xo2na5y/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
$ apt update $ sudo apt install libopencv-dev
$ cp bb2-07-14-face.py face.py $ vi face.py
$ python3 face.py