編集履歴一覧に戻る
ultimatemasashiのアイコン画像

ultimatemasashi が 2021年01月03日01時43分57秒 に編集

コメント無し

本文の変更

•概要 ![キャプションを入力できます](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コードを書いて微調整。 ※マウスポインタの速度を遅くするのがコツです。 これで腕を動かさなくてもマウスポインタが動かせます!!