0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[表情検出] 笑ったら寝ろを作ろう(手抜き記事)

Last updated at Posted at 2023-12-14

「笑ったら寝ろwww」を作りたいなと思いました。

「笑ったら寝ろwww」ってありますよね。あれ、絶対寝てないので嫌いです。寝なさい。

ということで今回は笑ったら寝てもらうためのプログラムを書きました。
必要な技術は3つ

  1. 笑っていることの判断(表情検出)
  2. 部屋の電気を消してあげる
  3. シャットダウンしてあげる

ってなわけで技術調査からどうぞ。

表情検出

表情検出をする基本的なコード。岡田の笑顔が映ってますね。

これはcolabとかで動きます。
https://gist.github.com/okdshinya/f5c7aba961195804d85c35bf23fdb404

部屋の電気を消す

自分の書いたプログラムで家電が操作できたらめっちゃ面白くないですか?
出来ます。

NatureRemoの宣伝

Nature Remo、小さいデバイスをUSB-Bにつないだ状態で部屋に放置すると、そいつがリモコンになってくれるってやつです。赤外線の操作を覚えてくれます。正直電池で動いてくれると嬉しいです。

欲しいなら安いやつとか、安売りしてるタイミングで買うのがおすすめです。
https://shop.nature.global/collections/nature-remo

APIあるやで

Nature RemoはAPIあります。これは買いです。
https://developer.nature.global/

シャットダウン

パソコンも落としたいですね。
なんか普通にシステムコールできるっぽいです。以下のコードを実行したらシャットダウンするってばよ。

import os
os.system('shutdown -s')

完成したものがこちら

完成してません。飽きました。

岡田が実装してないものリスト

  1. シャットダウンとNature Remo API
    みんな要らないと思うのでやめました。
  2. 表情検出を非同期にすることで表示を滑らかにすること。
    これ上手く書ける人いますか?僕はプログラミングわかんないので出来ませんでした。

つくったもの

えー、表情検出のコードとほぼ一緒です。ローカルで動かしたんですけど環境は書くのめんどくさいので書きません。

import cv2
from feat import Detector
import concurrent.futures

#カメラ
cap = cv2.VideoCapture(0)

#使うやつ
detector = Detector(
    face_model="retinaface",
    landmark_model="mobilefacenet",
    au_model='svm',  # ['svm', 'logistic', 'jaanet']
    emotion_model="resmasknet",
)

while True:
    # カメラからの画像取得
    ret, frame = cap.read()
    frame_flipped = cv2.flip(frame, 1)  # 1は左右反転を示す
    # 画像保存
    cv2.imwrite('../img/pic.jpg', frame_flipped)

    #すごいことする
    single_face_prediction = detector.detect_image('../img/pic.jpg', outputFname="output.csv")

    #数値を出す。
    happiness_level = int(single_face_prediction.emotions["happiness"][0] * 100)
    if happiness_level>0:
        result = "Happiness Level="+str(happiness_level)+ "%"
    print(result)

    #表示する
    cv2.putText(frame_flipped, result, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
    cv2.imshow('camera', frame_flipped)

    #ここで笑ってるときの処理ができる。
    #シャットダウンとか、僕はNature remoのAPI使って部屋の電気とかいじる。
    if happiness_level > 90:
        pass

    #Escキー押したら止まる
    key = cv2.waitKey(10)
    if key == 27:
        break

まとめ

岡田はプログラミングが出来ない。ちゃんちゃん♪

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?