ultimatemasashi が 2021年02月28日09時26分22秒 に編集
コメント無し
本文の変更
•概要 顔の位置を動かすとマウスポインタがその方向に合わせて移動します!! ![キャプションを入力できます](https://camo.elchika.com/06540397c4b9ec36cc564ea1fd3107cf0bdc37e6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f39643937396438322d323734322d343736632d393262322d616263333562623561363266/) 画像認識アプリケーションであるOpenCVで顔を読み取りサーボモーターを動かしてマウスポインタを動かします。 ![キャプションを入力できます](https://camo.elchika.com/7e75ba53fc3ba7ba670da86d24602dacba5677fd/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f35396636326664322d643634312d346536642d393935312d633066363830653962366530/) 3Dプリンタで作成したケースにはピンポン玉が入っており縦横にサーボモーターを動かすことにより上下左右にポインタを動かす事ができます。 ![キャプションを入力できます](https://camo.elchika.com/8a9c001053d03f3211468dc3ae06aea6d127195e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f38656430623338362d333131362d343731612d383933652d613563623032383566373766/) ピンポン玉の上にうまく光学マウスを乗せてコントロールします。 pythonコード ``` #! /usr/bin/env python import cv2 import time import Adafruit_PCA9685 pwm = Adafruit_PCA9685.PCA9685() face_cascade_path = 'haarcascade_frontalface_default.xml' eye_cascade_path = 'haarcascade_eye.xml' face_cascade = cv2.CascadeClassifier(face_cascade_path) eye_cascade = cv2.CascadeClassifier(eye_cascade_path) cap = cv2.VideoCapture(0) while True: pwm.set_pwm_freq(60) ret, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5) for x, y, w, h in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) face = img[y: y + h, x: x + w] face_gray = gray[y: y + h, x: x + w] eyes = eye_cascade.detectMultiScale(face_gray) for (ex, ey, ew, eh) in eyes: cv2.rectangle(face, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) print(x ,"x") print(y ,"Y") if x > 200 : pwm.set_pwm(15, 0,200) time.sleep(0.05)pwm.set_pwm(15, 0, 0) print("右") if x < 100 : pwm.set_pwm(15, 0,700) time.sleep(0.05) pwm.set_pwm(15, 0, 0) print("左") if y > 200 : pwm.set_pwm(14, 0, 700) time.sleep(0.05) pwm.set_pwm(14, 0, 0) print("上") if y < 100 : pwm.set_pwm(14, 0, 200) time.sleep(0.05) pwm.set_pwm(14, 0, 0) print("下") cv2.imshow('video image', img) key = cv2.waitKey(10) if key == 27: break cap.release() cv2.destroyAllWindows() ``` ・材料 raspberry pi 4 pca9685 360°サーボモーター ピンポン玉 ウェブカメラ 光学マウス 架台(3Dプリンタで作成)
モバイルバッテリー
•やり方 ①OpenCVをインストールし、ウェブカメラの動作確認をする。 ②サーボモーター制御を行うpca9685モジュール をラズパイ 及びサーボモーターと接続。 ③pca9685ライブラリのインストール sudo pip install adafruit-pca9685 ④3Dプリンタで架台を作りサーボモーター、ピンポン玉、光学マウスを取り付ける ⑤pythonコードを書いて微調整。 ※マウスポインタの速度を遅くするのがコツです。
回路図
![キャプションを入力できます](https://camo.elchika.com/e7df50c3b38953fccd702d3fc00186b9129ade30/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f33656664323538332d366263662d346330642d393232312d316361303836343866336330/)
これで腕を動かさなくてもマウスポインタが動かせます!!