ちょっと久しぶりにRaspberry-Pi3を立ち上げた。やりたいことは組み込み機器でOpenCVとか、OpenVXをどのようにして動かせばよいのかの調査だ。 まずは、Raspberry-Pi3を使ってOpenCVを動作させたい。 これは既に先人によって手法が確立されていることで、Qiitaにも記事が上がっている。
これと同じ手法で、OpenCVの環境を構築することが出来た。当該記事ではOpenCVのバージョンが3.2.0で、調べてみると今は3.3.0だったけど、一応3.2.0でやってみた。
ちなみに、ビルド中にJava関連でビルドエラーが出た場合は、JAVA_HOME
を設定してやるとうまくビルドできるようだ。
export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/
顔検出プログラムを動作させる。
個人的には、OpenCVの環境としてはC++ではなく、Pythonが主流になっていることに驚いてしまった。時代は進んでるなあ。
下記も上記参考リンクのほぼそのまま。
import cv2 import numpy as np faceCascade = cv2.CascadeClassifier('../opencv/opencv/data/haarcascades/haarcascade_frontalface_default.xml') img = cv2.imread('<imagefile.jpg>', cv2.IMREAD_COLOR) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) face = faceCascade.detectMultiScale(gray, 1.1, 3) if len(face) > 0: for rect in face: cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0,255), thickness=2) else: print ("no face") cv2.imwrite('detected.jpg', img)
画像まで一緒だと芸が無いので、大好きなスターウォーズのポスターでやってみる。この画像自体は http://starwars.disney.co.jp/movie/force.html より拝借。
なんか変なの認識してる。でもまあ主人公級はみんな認識できたので良しとしよう。あとドロイドまで顔として認識しちゃった。