raspberrypi4 ランダム関数を利用したアルゴリズム







今回は


ランダム関数を使って

happinessの表情を感知したら

audioファイルの

12-16の範囲でどれかが流れる

neutralの表情を感知したら

17-21の範囲でどれかが流れる

また、

何も表情が感知されなければ

1-11の範囲でどれかが流れる

といったプログラムを作成した。



しかし、

プログラムは動いたが

どれがどの表情を感知して音声が出力されているのかわからなくなった

せっかくゴールが近づいたと思ったが

自分の想像していたものと違うため

構造をどうしようか悩んできてしまった



まあ、とりあえず、

先に外観の方法を完成させたいと思う。



✳︎プログラム

  1. import cognitive_face as CF
  2. import json
  3. import picamera
  4. import time
  5. import cv2 as cv
  6. import pygame
  7. import time
  8. import random
  9. def voice(file):
  10.     pygame.mixer.init(frequency=44100)
  11.     pygame.mixer.music.load(file)
  12.     pygame.mixer.music.play(1)
  13.     time.sleep(2)
  14.     pygame.mixer.music.stop()
  15.     
  16.     
  17. voice("/home/pi/mypython/camera/audio/1.mp3")
  18. KEY = ''
  19. ENDPOINT = ''
  20. CF.Key.set(KEY)
  21. CF.BaseUrl.set(ENDPOINT)
  22. voice("/home/pi/mypython/camera/audio/1.mp3")
  23. time.sleep(60)
  24. voice("/home/pi/mypython/camera/audio/1.mp3")
  25. h_cnt=0
  26. happiness_val=0
  27. a_cnt=0
  28. anger_val=0
  29. n_cnt=0
  30. neutral_val=0
  31. houchi_cnt=0
  32. while True:
  33.     with picamera.PiCamera() as camera:
  34.         camera.resolution = (512,384)
  35.         camera.capture('test.jpg')
  36.         print('capture')
  37.         img = cv.imread('test.jpg')
  38.         grayimg = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
  39.         img = "test.jpg"
  40.         faces = CF.face.detect(img, attributes='emotion')
  41.         f=json.dumps(faces)
  42.         j=json.loads(f)
  43.         print("len"+str(len(j)))
  44.         #-------------------------------------------------------------------------------------
  45.         #len(j)は認識した顔の数
  46.         if len(j)==0:
  47.             #顔の数が0だったら放置と判定
  48.             houchi_cnt=houchi_cnt+1
  49.         else:
  50.             #顔が認識されれば感情をカウント
  51.             for i in range(0,len(j)):
  52.                 print(j[i]['faceAttributes']['emotion']['happiness'])
  53.                 happiness_val = j[i]['faceAttributes']['emotion']['happiness']
  54.             if happiness_val > 0.5 :
  55.                 h_cnt=h_cnt+1
  56.                 print("h_cnt"+str(h_cnt))
  57.                 
  58.             for i in range(0,len(j)):
  59.                 print(j[i]['faceAttributes']['emotion']['anger'])
  60.                 happiness_val = j[i]['faceAttributes']['emotion']['anger']
  61.             if anger_val > 0.5 :
  62.                 a_cnt=a_cnt+1
  63.                 print("a_cnt"+str(a_cnt))
  64.                 
  65.             for i in range(0,len(j)):
  66.                 print(j[i]['faceAttributes']['emotion']['neutral'])
  67.                 happiness_val = j[i]['faceAttributes']['emotion']['neutral']
  68.             if neutral_val > 0.5 :
  69.                 n_cnt=n_cnt+1
  70.                 print("n_cnt"+str(n_cnt))
  71.             
  72.             
  73.             
  74.         #-------------------------------------------------------------------------------------
  75.         if houchi_cnt==100:
  76.             v=random.randint(1,11)
  77.             voice("/home/pi/mypython/camera/audio/"+str(v)+".mp3")
  78.             houchi_cnt=0
  79.             print("houchi_cnt"+str(houchi_cnt))
  80.             
  81.         if h_cnt==1:
  82.             v=random.randint(12,16)
  83.             voice("/home/pi/mypython/camera/audio/"+str(v)+".mp3")
  84.             h_cnt=0
  85.             print("h_cnt"+str(h_cnt))
  86.             
  87.         if a_cnt==5:
  88.             v=random.randint(22,27)
  89.             voice("/home/pi/mypython/camera/audio/"+str(v)+".mp3")
  90.             a_cnt=0
  91.             print("a_cnt"+str(a_cnt))
  92.             
  93.         if n_cnt==5:
  94.             v=random.randint(17,21)
  95.             voice("/home/pi/mypython/camera/audio/"+str(v)+".mp3")
  96.             n_cnt=0
  97.             print("cnt"+str(n_cnt))
  98.         #-------------------------------------------------------------------------------------