2017年5月14日日曜日

Raspberry Pi Arch Linux ARMにOpenCV入れてみた

Arch Linux ARMにOpenCVとやらを入れてみた。
インストール自体は至極簡単。pacman(yaourt)任せでOK。
sudo pacman -S opencv
Pythonで使いたいので、"numpy"もインストールする。
sudo pacman -S python-numpy
"numpy"は、Pythonで数値計算を効率良く(高速に?)行う為のライブラリらしい。
これだけで、OpenCVが使えるようになる。
このようなBGR値を、操作することで画像処理を行っていく(らしい)。

ついでなので、画像での顔検出をやってみる。
下のページを参考にさせてもらいました。有り難うございます。
http://peaceandhilightandpython.hatenablog.com/entry/2016/02/18/194303
(自分の環境で動くように、パスの指定等は変更しています。)
検出用には、OpenCVをインストールすると標準で入っている、
"/usr/share/opencv/haarcascades/haarcascade_frontface_default.xml"
を使用する。
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cv2
import numpy as np

faceCascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml')

img = cv2.imread('./face.jpg')
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]), (255, 255,255), thickness=2)
else:
    print("no face")

cv2.imwrite('detected.jpg', img)

元の画像(お馴染みの)

検出結果

試しに、180度回転して上下逆にした画像で実行してみた。
これは、"no face"となり、検出できなかった。

2017年5月5日金曜日

「簡易ポーズエディタ」 遂に、ボタンを使う


Raspberry Pi 2 Model B + ServoBlaster + シェルスクリプト(GtkDialog)で4足歩行ロボットを操作。
「簡易ポーズエディタ」の、今まで飾りになっていた上部のボタンに、機能を持たせた。
「左回転」「前進」「後退」「右回転」のボタンでそれぞれの動作を起動する。
(GtkDialogから、別のシェルスクリプトに書かれたfunction呼んでいるだけ)
ただし、「停止」ボタンを押さない限り、繰り返し回数上限まで動作を続行する。

ヘボいのは、上限に達して終了しても、操作ボタンがグレイアウトから復帰しない点。
「停止」ボタンを押さないと、復帰しない。