マンション一階に住んでいるのだが、庭に猫がときどき入ってくる時がある。 通りすぎるくらいならいいのだが、奥さんが育てているコケを荒らしたり、糞をしたり結構やりたい放題。
こんな猫よけグッズはあるのだが全然効果なし。(慣れちゃったのか?)
近くを通ると耳がキーンってする
退治するまではいかないまでも、どの時間帯にに来るのかぐらいは調べてみることにした。
といってもずっと見ているわけにはいかないのでラズパイでOpenCVを動かして、反応した時だけ写真をとってみます。
まずは
この記事など見てもらってラズパイにOpenCVインストール済みということで…
インストールがうまくできたらこのようなコードを書きます。
# -*- coding: utf-8 -*-
import sys
import cv2
import time
if _name_ == '_main_':
try:
cascade_path = "/home/pi/opencv-3.1.0/data/haarcascades/cascade.xml"
cascade = cv2.CascadeClassifier(cascade_path)
capture = cv2.VideoCapture(0)
if capture.isOpened() is False:
raise IOError("VideoCapture could not open.")
while True:
ret, image = capture.read()
if ret == False:
continue
facerect = cascade.detectMultiScale(image, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
color = (255, 255, 255)
for rect in facerect:
cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), color, thickness=2)
time.sleep(1)
cv2.imwrite("img.png", image);
break
cv2.imshow("FaceDetection", image)
#wait[ms]
cv2.waitKey(1)
except KeyboardInterrupt :
print("\nCtl+C")
except Exception as e:
print(str(e))
finally:
capture.release()
cv2.destroyAllWindows()
for i in range (1,5):
cv2.waitKey(10)
print("\nexit program")
ここで顔認識と違うのは画像処理を行う判別ファイルが違います。
猫用なんてあるの? って思うかもしれませんが、
ここにあります。
保存したら、パスを入れ替えてください。
cascade_path = "/home/pi/opencv-3.1.0/data/haarcascades/cascade.xml"
あとは猫を認識したときに画像を保存します。ファイル名は適当です。
cv2.imwrite("img.png", image);
これでとりあえず、猫を画像検索したタブレットでテスト
に、認識してる気がする…
ホントは電磁弁とかと連動させて水でもかけたいとこだけどかわいそうなのでやめときます…
とりあえずリフォーム終わったら仕掛けてみます!!