{"id":2337,"date":"2018-02-25T15:15:46","date_gmt":"2018-02-25T06:15:46","guid":{"rendered":"http:\/\/bezelie.com\/blog\/?page_id=2337"},"modified":"2018-02-25T18:45:24","modified_gmt":"2018-02-25T09:45:24","slug":"%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e8%a7%a3%e8%aa%ac%e3%80%8cdemo_face1-py%e3%80%8d","status":"publish","type":"page","link":"http:\/\/bezelie.com\/blog\/?page_id=2337","title":{"rendered":"\u30d7\u30ed\u30b0\u30e9\u30e0\u89e3\u8aac\u300cdemo_face1.py\u300d"},"content":{"rendered":"<p>\u30fbdemo_face1.py\u306f\u3079\u30bc\u30ea\u30fc\u304c\u9854\u3092\u8a8d\u8b58\u3057\u305f\u3089\u30bb\u30ea\u30d5\u3092\u8a00\u3046\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002\u9a12\u304c\u3057\u3044\u5834\u6240\u306b\u7f6e\u304f\u5834\u5408\u306a\u3069\u3001\u97f3\u58f0\u8a8d\u8b58\u304c\u4f7f\u3048\u306a\u3044\u3068\u304d\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<hr \/>\n<h5>\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8aad\u307f\u8fbc\u307f<\/h5>\n<pre class=\"height:200 lang:python range:1-20 decode:true\" title=\"demo_face1.py\">#!\/usr\/bin\/python\n# -*- coding: utf-8 -*-\n# \u9854\u8a8d\u8b58\u30c7\u30e2\n# for Bezelie Edgar\n# for Raspberry Pi\n# by Jun Toyoda (Team Bezelie)\n# from Aug15th2017\n\nfrom datetime import datetime      # \u73fe\u5728\u6642\u523b\u53d6\u5f97\nfrom random import randint         # \u4e71\u6570\u306e\u767a\u751f\nfrom time import sleep             # \u30a6\u30a7\u30a4\u30c8\u51e6\u7406\nimport subprocess                  # \u5916\u90e8\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3059\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\nimport json                        # json\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport csv                         # CSV\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport sys                         # python\u7d42\u4e86sys.exit()\u306e\u305f\u3081\u306b\u5fc5\u8981\nimport picamera                    # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport picamera.array              # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport cv2                         # Open CV\u30e2\u30b8\u30e5\u30fc\u30eb    \nimport bezelie                     # \u3079\u30bc\u30ea\u30fc\u5c02\u7528\u30b5\u30fc\u30dc\u5236\u5fa1\u30e2\u30b8\u30e5\u30fc\u30eb\n\ncsvFile   = \"\/home\/pi\/bezelie\/chatDialog.csv\"          # \u5bfe\u8a71\u30ea\u30b9\u30c8\njsonFile  = \"\/home\/pi\/bezelie\/edgar\/data_chat.json\"    # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\nttsFile   = \"\/home\/pi\/bezelie\/edgar\/exec_openJTalk.sh\" # \u97f3\u58f0\u5408\u6210\ndebugFile = \"\/home\/pi\/bezelie\/debug.txt\"               # debug\u7528\n\n# \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\nf = open (jsonFile,'r')\njDict = json.load(f)\nname = jDict['data0'][0]['name']       # \u3079\u30bc\u30ea\u30fc\u306e\u5225\u540d\u3002\nuser = jDict['data0'][0]['user']       # \u30e6\u30fc\u30b6\u30fc\u306e\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3002\n# mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u300262\u304c\u6700\u5927\u5024\u3002\nvol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n# \u5909\u6570\u306e\u521d\u671f\u5316\nalarmStop = False   # \u30a2\u30e9\u30fc\u30e0\u306e\u30b9\u30cc\u30fc\u30ba\u6a5f\u80fd\uff08\u975e\u642d\u8f09\uff09\nwaitTime = 5        # auto\u30e2\u30fc\u30c9\u3067\u306e\u4f1a\u8a71\u306e\u9593\u9694\n\n# OpenCV\ncascade_path =  \"\/usr\/share\/opencv\/haarcascades\/haarcascade_frontalface_alt.xml\" # \u9854\u8a8d\u8b58xml\ncascade = cv2.CascadeClassifier(cascade_path)\n\n# \u95a2\u6570\ndef timeCheck(): # \u6d3b\u52d5\u6642\u9593\u5185\u304b\u3069\u3046\u304b\u306e\u30c1\u30a7\u30c3\u30af\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  awake1Start = jDict['data1'][0]['awake1Start']\n  awake1End = jDict['data1'][0]['awake1End']\n  awake2Start = jDict['data1'][0]['awake2Start']\n  awake2End  = jDict['data1'][0]['awake2End']\n  t = datetime.now()\n  if   int(t.hour) &gt;  int(awake1Start[0:2]) and int(t.hour) &lt;    int(awake1End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake1Start[0:2]) and int(t.minute) &gt;= int(awake1Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake1End[0:2])   and int(t.minute) &lt;= int(awake1End[3:5]):\n    flag = True\n  elif int(t.hour) &gt;  int(awake2Start[0:2]) and int(t.hour) &lt;    int(awake2End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake2Start[0:2]) and int(t.minute) &gt;= int(awake2Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake2End[0:2])   and int(t.minute) &lt;= int(awake2End[3:5]):\n    flag = True\n  else:\n    flag = False # It is not Active Time\n  return flag\n\ndef replyMessage(keyWord):        # \u5bfe\u8a71\n  data = []                       # \u5bfe\u8a71\u30d5\u30a1\u30a4\u30eb\uff08csv\uff09\u3092\u5909\u6570data\u306b\u8aad\u307f\u8fbc\u3080\n  with open(csvFile, 'rb') as f:  # csvFile\u3092\u30aa\u30fc\u30d7\u30f3\n    for i in csv.reader(f):       # \u30d5\u30a1\u30a4\u30eb\u304b\u3089\uff11\u884c\u305a\u3064i\u306b\u8aad\u307f\u8fbc\u3080\n      data.append(i)              # data\u306b\u8ffd\u52a0\n\n  data1 = []                      # data\u304b\u3089\u8cea\u554f\u5185\u5bb9\u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u4e00\u81f4\u3057\u3066\u3044\u308b\u884c\u3092data1\u3068\u3057\u3066\u629c\u304d\u51fa\u3059\n  for index,i in enumerate(data): # index=\u9023\u756a\n    if unicode(i[0], 'utf-8')==keyWord:  # i[0]\u306fstr\u306a\u306e\u3067utf-8\u306b\u5909\u63db\u3057\u3066\u6bd4\u8f03\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\n      j = randint(1,100)          # \uff11\u304b\u3089\uff11\uff10\uff10\u307e\u3067\u306e\u4e71\u6570\u3092\u767a\u751f\u3055\u305b\u308b\n      data1.append(i+[j]+[index]) # data1=\u8cea\u554f\u5185\u5bb9,\u8fd4\u7b54,\u4e71\u6570,\u9023\u756a\u306e\u30ea\u30b9\u30c8\n\n  if data1 == []:                 # data1\u304c\u7a7a\u3063\u307d\u3060\u3063\u305f\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u8fd4\u3059\n    for index,i in enumerate(data):\n      j = randint(1,100)\n      data1.append(i+[j]+[index])\n\n  maxNum = 0                      # \u8907\u6570\u306e\u5019\u88dc\u304b\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u9078\u51fa\u3002data1\u304b\u3089\u6b04\u6570\u5024\u304c\u6700\u5927\u306a\u3082\u306e\u3092\u9078\u3076\n  for i in data1:\n    if i[2] &gt; maxNum:\n      maxNum = i[2]\n      ansNum = i[3]\n\n  # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  # mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u306e\u8a2d\u5b9a\u3002\n  vol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n  bez.moveRnd()\n  subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n  subprocess.call(\"sh \"+ttsFile+\" \"+data[ansNum][1], shell=True)\n  bez.stop()\n\ndef debug_message(message):\n  print message\n#  writeFile(message)\n#\u3000pass\n#  sys.stdout.write(message)\n\ndef writeFile(text): # \u30c7\u30d0\u30c3\u30b0\u30d5\u30a1\u30a4\u30eb\u51fa\u529b\u6a5f\u80fd\n  f = open (debugFile,'r')\n  textBefore = \"\"\n  for row in f:\n    textBefore = textBefore + row\n  f.close()\n  f = open (debugFile,'w')\n  f.write(textBefore + text + \"\\n\")\n  f.close()\n\n# \u30b5\u30fc\u30dc\u306e\u521d\u671f\u5316\nbez = bezelie.Control()                 # \u3079\u30bc\u30ea\u30fc\u64cd\u4f5c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u751f\u6210\nbez.moveCenter()                        # \u30b5\u30fc\u30dc\u306e\u56de\u8ee2\u4f4d\u7f6e\u3092\u30c8\u30ea\u30e0\u5024\u306b\u5408\u308f\u305b\u308b\n\n# \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\ndef main():\n  try:\n    subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n    subprocess.call(\"sh \"+ttsFile+\" \"+u\"\u9854\u8a8d\u8b58\u30e2\u30fc\u30c9\", shell=True)\n    stageAngle = 0           # \u30b9\u30c6\u30fc\u30b8\u306e\u521d\u671f\u89d2\u5ea6\n    stageDelta = 5           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u89d2\u5ea6\n    stageSpeed = 8           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u901f\u5ea6\n    bez.moveHead(15)\n    with picamera.PiCamera() as camera:                         # Open Pi-Camera as camera\n      with picamera.array.PiRGBArray(camera) as stream:         # Open Video Stream from Pi-Camera as stream\n        camera.resolution = (640, 480)                          # Display Resolution\n        # camera.resolution = (1280, 720)                       # Display Resolution\n        # camera.resolution = (1920, 1080)                      # Display Resolution\n        camera.hflip = True                                     # Vertical Flip \n        camera.vflip = True                                     # Horizontal Flip\n        while True:\n          if timeCheck(): # \u6d3b\u52d5\u6642\u9593\u3060\u3063\u305f\u3089\u52d5\u304f\n            camera.capture(stream, 'bgr', use_video_port=True)    # Capture the Video Stream\n            gray = cv2.cvtColor(stream.array, cv2.COLOR_BGR2GRAY) # Convert BGR to Grayscale\n            facerect = cascade.detectMultiScale(gray,             # Find face from gray\n              scaleFactor=1.9,                                    # 1.1 - 1.9 :the bigger the quicker &amp; less acurate \n              minNeighbors=3,                                     # 3 - 6 : the smaller the more easy to detect\n              minSize=(100,120),                                   # Minimam face size \n              maxSize=(640,480))                                  # Maximam face size\n            if len(facerect) &gt; 0:\n              for rect in facerect:\n                cv2.rectangle(stream.array,                       # Draw a red rectangle at face place \n                  tuple(rect[0:2]),                               # Upper Left\n                  tuple(rect[0:2]+rect[2:4]),                     # Lower Right\n                  (0,0,255), thickness=2)                         # Color and thickness\n              replyMessage(u\"\u9854\u8a8d\u8b58\")\n            # cv2.imshow('frame', stream.array)                     # \u753b\u9762\u306b\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u5916\u3057\u3066\u304f\u3060\u3055\u3044\n            if cv2.waitKey(1) &amp; 0xFF == ord('q'):                 # Quit operation\n              break\n            stream.seek(0)                                        # Reset the stream\n            stream.truncate()\n            stageAngle = stageAngle + stageDelta\n            if stageAngle &gt; 25 or stageAngle &lt; -25:\n              stageDelta = stageDelta*(-1)\n            bez.moveStage(stageAngle,stageSpeed)\n          else:           # \u6d3b\u52d5\u6642\u9593\u5916\u306f\u52d5\u4f5c\u3057\u306a\u3044\n            subprocess.call('amixer cset numid=1 60% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u8abf\u6574\n            subprocess.call(\"sh \"+ttsFile+\" \"+\"\u6d3b\u52d5\u6642\u9593\u5916\u3067\u3059\", shell=True)\n            print \"\u6d3b\u52d5\u6642\u9593\u5916\u306a\u306e\u3067\u767a\u58f0\u30fb\u52d5\u4f5c\u3057\u307e\u305b\u3093\"\n            sleep (600)   # 10\u5206\u5f85\u6a5f\n            subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u623b\u3059\n        cv2.destroyAllWindows()\n\n  except KeyboardInterrupt: # CTRL+C\u3067\u7d42\u4e86\n    debug_message('keyboard interrupted')\n    bez.moveCenter()\n    bez.stop()\n    sys.exit(0)\n\nif __name__ == \"__main__\":\n  debug_message('---------- started ----------')\n  main()\n  sys.exit(0)<\/pre>\n<p style=\"padding-left: 30px;\">\u30fb\u30e9\u30ba\u30d1\u30a4\u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30ebpycamera\u3068\u3001\u753b\u50cf\u51e6\u7406\u30e2\u30b8\u30e5\u30fc\u30ebOpenCV\u3092import\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h5>\u521d\u671f\u8a2d\u5b9a<\/h5>\n<pre class=\"height:200 lang:python range:20-41 decode:true\" title=\"demo_face1.py\">#!\/usr\/bin\/python\n# -*- coding: utf-8 -*-\n# \u9854\u8a8d\u8b58\u30c7\u30e2\n# for Bezelie Edgar\n# for Raspberry Pi\n# by Jun Toyoda (Team Bezelie)\n# from Aug15th2017\n\nfrom datetime import datetime      # \u73fe\u5728\u6642\u523b\u53d6\u5f97\nfrom random import randint         # \u4e71\u6570\u306e\u767a\u751f\nfrom time import sleep             # \u30a6\u30a7\u30a4\u30c8\u51e6\u7406\nimport subprocess                  # \u5916\u90e8\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3059\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\nimport json                        # json\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport csv                         # CSV\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport sys                         # python\u7d42\u4e86sys.exit()\u306e\u305f\u3081\u306b\u5fc5\u8981\nimport picamera                    # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport picamera.array              # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport cv2                         # Open CV\u30e2\u30b8\u30e5\u30fc\u30eb    \nimport bezelie                     # \u3079\u30bc\u30ea\u30fc\u5c02\u7528\u30b5\u30fc\u30dc\u5236\u5fa1\u30e2\u30b8\u30e5\u30fc\u30eb\n\ncsvFile   = \"\/home\/pi\/bezelie\/chatDialog.csv\"          # \u5bfe\u8a71\u30ea\u30b9\u30c8\njsonFile  = \"\/home\/pi\/bezelie\/edgar\/data_chat.json\"    # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\nttsFile   = \"\/home\/pi\/bezelie\/edgar\/exec_openJTalk.sh\" # \u97f3\u58f0\u5408\u6210\ndebugFile = \"\/home\/pi\/bezelie\/debug.txt\"               # debug\u7528\n\n# \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\nf = open (jsonFile,'r')\njDict = json.load(f)\nname = jDict['data0'][0]['name']       # \u3079\u30bc\u30ea\u30fc\u306e\u5225\u540d\u3002\nuser = jDict['data0'][0]['user']       # \u30e6\u30fc\u30b6\u30fc\u306e\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3002\n# mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u300262\u304c\u6700\u5927\u5024\u3002\nvol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n# \u5909\u6570\u306e\u521d\u671f\u5316\nalarmStop = False   # \u30a2\u30e9\u30fc\u30e0\u306e\u30b9\u30cc\u30fc\u30ba\u6a5f\u80fd\uff08\u975e\u642d\u8f09\uff09\nwaitTime = 5        # auto\u30e2\u30fc\u30c9\u3067\u306e\u4f1a\u8a71\u306e\u9593\u9694\n\n# OpenCV\ncascade_path =  \"\/usr\/share\/opencv\/haarcascades\/haarcascade_frontalface_alt.xml\" # \u9854\u8a8d\u8b58xml\ncascade = cv2.CascadeClassifier(cascade_path)\n\n# \u95a2\u6570\ndef timeCheck(): # \u6d3b\u52d5\u6642\u9593\u5185\u304b\u3069\u3046\u304b\u306e\u30c1\u30a7\u30c3\u30af\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  awake1Start = jDict['data1'][0]['awake1Start']\n  awake1End = jDict['data1'][0]['awake1End']\n  awake2Start = jDict['data1'][0]['awake2Start']\n  awake2End  = jDict['data1'][0]['awake2End']\n  t = datetime.now()\n  if   int(t.hour) &gt;  int(awake1Start[0:2]) and int(t.hour) &lt;    int(awake1End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake1Start[0:2]) and int(t.minute) &gt;= int(awake1Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake1End[0:2])   and int(t.minute) &lt;= int(awake1End[3:5]):\n    flag = True\n  elif int(t.hour) &gt;  int(awake2Start[0:2]) and int(t.hour) &lt;    int(awake2End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake2Start[0:2]) and int(t.minute) &gt;= int(awake2Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake2End[0:2])   and int(t.minute) &lt;= int(awake2End[3:5]):\n    flag = True\n  else:\n    flag = False # It is not Active Time\n  return flag\n\ndef replyMessage(keyWord):        # \u5bfe\u8a71\n  data = []                       # \u5bfe\u8a71\u30d5\u30a1\u30a4\u30eb\uff08csv\uff09\u3092\u5909\u6570data\u306b\u8aad\u307f\u8fbc\u3080\n  with open(csvFile, 'rb') as f:  # csvFile\u3092\u30aa\u30fc\u30d7\u30f3\n    for i in csv.reader(f):       # \u30d5\u30a1\u30a4\u30eb\u304b\u3089\uff11\u884c\u305a\u3064i\u306b\u8aad\u307f\u8fbc\u3080\n      data.append(i)              # data\u306b\u8ffd\u52a0\n\n  data1 = []                      # data\u304b\u3089\u8cea\u554f\u5185\u5bb9\u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u4e00\u81f4\u3057\u3066\u3044\u308b\u884c\u3092data1\u3068\u3057\u3066\u629c\u304d\u51fa\u3059\n  for index,i in enumerate(data): # index=\u9023\u756a\n    if unicode(i[0], 'utf-8')==keyWord:  # i[0]\u306fstr\u306a\u306e\u3067utf-8\u306b\u5909\u63db\u3057\u3066\u6bd4\u8f03\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\n      j = randint(1,100)          # \uff11\u304b\u3089\uff11\uff10\uff10\u307e\u3067\u306e\u4e71\u6570\u3092\u767a\u751f\u3055\u305b\u308b\n      data1.append(i+[j]+[index]) # data1=\u8cea\u554f\u5185\u5bb9,\u8fd4\u7b54,\u4e71\u6570,\u9023\u756a\u306e\u30ea\u30b9\u30c8\n\n  if data1 == []:                 # data1\u304c\u7a7a\u3063\u307d\u3060\u3063\u305f\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u8fd4\u3059\n    for index,i in enumerate(data):\n      j = randint(1,100)\n      data1.append(i+[j]+[index])\n\n  maxNum = 0                      # \u8907\u6570\u306e\u5019\u88dc\u304b\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u9078\u51fa\u3002data1\u304b\u3089\u6b04\u6570\u5024\u304c\u6700\u5927\u306a\u3082\u306e\u3092\u9078\u3076\n  for i in data1:\n    if i[2] &gt; maxNum:\n      maxNum = i[2]\n      ansNum = i[3]\n\n  # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  # mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u306e\u8a2d\u5b9a\u3002\n  vol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n  bez.moveRnd()\n  subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n  subprocess.call(\"sh \"+ttsFile+\" \"+data[ansNum][1], shell=True)\n  bez.stop()\n\ndef debug_message(message):\n  print message\n#  writeFile(message)\n#\u3000pass\n#  sys.stdout.write(message)\n\ndef writeFile(text): # \u30c7\u30d0\u30c3\u30b0\u30d5\u30a1\u30a4\u30eb\u51fa\u529b\u6a5f\u80fd\n  f = open (debugFile,'r')\n  textBefore = \"\"\n  for row in f:\n    textBefore = textBefore + row\n  f.close()\n  f = open (debugFile,'w')\n  f.write(textBefore + text + \"\\n\")\n  f.close()\n\n# \u30b5\u30fc\u30dc\u306e\u521d\u671f\u5316\nbez = bezelie.Control()                 # \u3079\u30bc\u30ea\u30fc\u64cd\u4f5c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u751f\u6210\nbez.moveCenter()                        # \u30b5\u30fc\u30dc\u306e\u56de\u8ee2\u4f4d\u7f6e\u3092\u30c8\u30ea\u30e0\u5024\u306b\u5408\u308f\u305b\u308b\n\n# \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\ndef main():\n  try:\n    subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n    subprocess.call(\"sh \"+ttsFile+\" \"+u\"\u9854\u8a8d\u8b58\u30e2\u30fc\u30c9\", shell=True)\n    stageAngle = 0           # \u30b9\u30c6\u30fc\u30b8\u306e\u521d\u671f\u89d2\u5ea6\n    stageDelta = 5           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u89d2\u5ea6\n    stageSpeed = 8           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u901f\u5ea6\n    bez.moveHead(15)\n    with picamera.PiCamera() as camera:                         # Open Pi-Camera as camera\n      with picamera.array.PiRGBArray(camera) as stream:         # Open Video Stream from Pi-Camera as stream\n        camera.resolution = (640, 480)                          # Display Resolution\n        # camera.resolution = (1280, 720)                       # Display Resolution\n        # camera.resolution = (1920, 1080)                      # Display Resolution\n        camera.hflip = True                                     # Vertical Flip \n        camera.vflip = True                                     # Horizontal Flip\n        while True:\n          if timeCheck(): # \u6d3b\u52d5\u6642\u9593\u3060\u3063\u305f\u3089\u52d5\u304f\n            camera.capture(stream, 'bgr', use_video_port=True)    # Capture the Video Stream\n            gray = cv2.cvtColor(stream.array, cv2.COLOR_BGR2GRAY) # Convert BGR to Grayscale\n            facerect = cascade.detectMultiScale(gray,             # Find face from gray\n              scaleFactor=1.9,                                    # 1.1 - 1.9 :the bigger the quicker &amp; less acurate \n              minNeighbors=3,                                     # 3 - 6 : the smaller the more easy to detect\n              minSize=(100,120),                                   # Minimam face size \n              maxSize=(640,480))                                  # Maximam face size\n            if len(facerect) &gt; 0:\n              for rect in facerect:\n                cv2.rectangle(stream.array,                       # Draw a red rectangle at face place \n                  tuple(rect[0:2]),                               # Upper Left\n                  tuple(rect[0:2]+rect[2:4]),                     # Lower Right\n                  (0,0,255), thickness=2)                         # Color and thickness\n              replyMessage(u\"\u9854\u8a8d\u8b58\")\n            # cv2.imshow('frame', stream.array)                     # \u753b\u9762\u306b\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u5916\u3057\u3066\u304f\u3060\u3055\u3044\n            if cv2.waitKey(1) &amp; 0xFF == ord('q'):                 # Quit operation\n              break\n            stream.seek(0)                                        # Reset the stream\n            stream.truncate()\n            stageAngle = stageAngle + stageDelta\n            if stageAngle &gt; 25 or stageAngle &lt; -25:\n              stageDelta = stageDelta*(-1)\n            bez.moveStage(stageAngle,stageSpeed)\n          else:           # \u6d3b\u52d5\u6642\u9593\u5916\u306f\u52d5\u4f5c\u3057\u306a\u3044\n            subprocess.call('amixer cset numid=1 60% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u8abf\u6574\n            subprocess.call(\"sh \"+ttsFile+\" \"+\"\u6d3b\u52d5\u6642\u9593\u5916\u3067\u3059\", shell=True)\n            print \"\u6d3b\u52d5\u6642\u9593\u5916\u306a\u306e\u3067\u767a\u58f0\u30fb\u52d5\u4f5c\u3057\u307e\u305b\u3093\"\n            sleep (600)   # 10\u5206\u5f85\u6a5f\n            subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u623b\u3059\n        cv2.destroyAllWindows()\n\n  except KeyboardInterrupt: # CTRL+C\u3067\u7d42\u4e86\n    debug_message('keyboard interrupted')\n    bez.moveCenter()\n    bez.stop()\n    sys.exit(0)\n\nif __name__ == \"__main__\":\n  debug_message('---------- started ----------')\n  main()\n  sys.exit(0)<\/pre>\n<p style=\"padding-left: 30px;\">\u30fb\uff13\uff19~\uff14\uff10\u884c\u76ee\u3067\u9854\u3092\u8a8d\u8b58\u3059\u308b\u305f\u3081\u306e\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u3002<\/p>\n<h5>\u95a2\u6570\u5b9a\u7fa9<\/h5>\n<pre class=\"height:200 lang:python range:41-116 decode:true\" title=\"demo_face1.py\">#!\/usr\/bin\/python\n# -*- coding: utf-8 -*-\n# \u9854\u8a8d\u8b58\u30c7\u30e2\n# for Bezelie Edgar\n# for Raspberry Pi\n# by Jun Toyoda (Team Bezelie)\n# from Aug15th2017\n\nfrom datetime import datetime      # \u73fe\u5728\u6642\u523b\u53d6\u5f97\nfrom random import randint         # \u4e71\u6570\u306e\u767a\u751f\nfrom time import sleep             # \u30a6\u30a7\u30a4\u30c8\u51e6\u7406\nimport subprocess                  # \u5916\u90e8\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3059\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\nimport json                        # json\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport csv                         # CSV\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport sys                         # python\u7d42\u4e86sys.exit()\u306e\u305f\u3081\u306b\u5fc5\u8981\nimport picamera                    # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport picamera.array              # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport cv2                         # Open CV\u30e2\u30b8\u30e5\u30fc\u30eb    \nimport bezelie                     # \u3079\u30bc\u30ea\u30fc\u5c02\u7528\u30b5\u30fc\u30dc\u5236\u5fa1\u30e2\u30b8\u30e5\u30fc\u30eb\n\ncsvFile   = \"\/home\/pi\/bezelie\/chatDialog.csv\"          # \u5bfe\u8a71\u30ea\u30b9\u30c8\njsonFile  = \"\/home\/pi\/bezelie\/edgar\/data_chat.json\"    # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\nttsFile   = \"\/home\/pi\/bezelie\/edgar\/exec_openJTalk.sh\" # \u97f3\u58f0\u5408\u6210\ndebugFile = \"\/home\/pi\/bezelie\/debug.txt\"               # debug\u7528\n\n# \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\nf = open (jsonFile,'r')\njDict = json.load(f)\nname = jDict['data0'][0]['name']       # \u3079\u30bc\u30ea\u30fc\u306e\u5225\u540d\u3002\nuser = jDict['data0'][0]['user']       # \u30e6\u30fc\u30b6\u30fc\u306e\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3002\n# mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u300262\u304c\u6700\u5927\u5024\u3002\nvol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n# \u5909\u6570\u306e\u521d\u671f\u5316\nalarmStop = False   # \u30a2\u30e9\u30fc\u30e0\u306e\u30b9\u30cc\u30fc\u30ba\u6a5f\u80fd\uff08\u975e\u642d\u8f09\uff09\nwaitTime = 5        # auto\u30e2\u30fc\u30c9\u3067\u306e\u4f1a\u8a71\u306e\u9593\u9694\n\n# OpenCV\ncascade_path =  \"\/usr\/share\/opencv\/haarcascades\/haarcascade_frontalface_alt.xml\" # \u9854\u8a8d\u8b58xml\ncascade = cv2.CascadeClassifier(cascade_path)\n\n# \u95a2\u6570\ndef timeCheck(): # \u6d3b\u52d5\u6642\u9593\u5185\u304b\u3069\u3046\u304b\u306e\u30c1\u30a7\u30c3\u30af\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  awake1Start = jDict['data1'][0]['awake1Start']\n  awake1End = jDict['data1'][0]['awake1End']\n  awake2Start = jDict['data1'][0]['awake2Start']\n  awake2End  = jDict['data1'][0]['awake2End']\n  t = datetime.now()\n  if   int(t.hour) &gt;  int(awake1Start[0:2]) and int(t.hour) &lt;    int(awake1End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake1Start[0:2]) and int(t.minute) &gt;= int(awake1Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake1End[0:2])   and int(t.minute) &lt;= int(awake1End[3:5]):\n    flag = True\n  elif int(t.hour) &gt;  int(awake2Start[0:2]) and int(t.hour) &lt;    int(awake2End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake2Start[0:2]) and int(t.minute) &gt;= int(awake2Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake2End[0:2])   and int(t.minute) &lt;= int(awake2End[3:5]):\n    flag = True\n  else:\n    flag = False # It is not Active Time\n  return flag\n\ndef replyMessage(keyWord):        # \u5bfe\u8a71\n  data = []                       # \u5bfe\u8a71\u30d5\u30a1\u30a4\u30eb\uff08csv\uff09\u3092\u5909\u6570data\u306b\u8aad\u307f\u8fbc\u3080\n  with open(csvFile, 'rb') as f:  # csvFile\u3092\u30aa\u30fc\u30d7\u30f3\n    for i in csv.reader(f):       # \u30d5\u30a1\u30a4\u30eb\u304b\u3089\uff11\u884c\u305a\u3064i\u306b\u8aad\u307f\u8fbc\u3080\n      data.append(i)              # data\u306b\u8ffd\u52a0\n\n  data1 = []                      # data\u304b\u3089\u8cea\u554f\u5185\u5bb9\u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u4e00\u81f4\u3057\u3066\u3044\u308b\u884c\u3092data1\u3068\u3057\u3066\u629c\u304d\u51fa\u3059\n  for index,i in enumerate(data): # index=\u9023\u756a\n    if unicode(i[0], 'utf-8')==keyWord:  # i[0]\u306fstr\u306a\u306e\u3067utf-8\u306b\u5909\u63db\u3057\u3066\u6bd4\u8f03\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\n      j = randint(1,100)          # \uff11\u304b\u3089\uff11\uff10\uff10\u307e\u3067\u306e\u4e71\u6570\u3092\u767a\u751f\u3055\u305b\u308b\n      data1.append(i+[j]+[index]) # data1=\u8cea\u554f\u5185\u5bb9,\u8fd4\u7b54,\u4e71\u6570,\u9023\u756a\u306e\u30ea\u30b9\u30c8\n\n  if data1 == []:                 # data1\u304c\u7a7a\u3063\u307d\u3060\u3063\u305f\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u8fd4\u3059\n    for index,i in enumerate(data):\n      j = randint(1,100)\n      data1.append(i+[j]+[index])\n\n  maxNum = 0                      # \u8907\u6570\u306e\u5019\u88dc\u304b\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u9078\u51fa\u3002data1\u304b\u3089\u6b04\u6570\u5024\u304c\u6700\u5927\u306a\u3082\u306e\u3092\u9078\u3076\n  for i in data1:\n    if i[2] &gt; maxNum:\n      maxNum = i[2]\n      ansNum = i[3]\n\n  # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  # mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u306e\u8a2d\u5b9a\u3002\n  vol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n  bez.moveRnd()\n  subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n  subprocess.call(\"sh \"+ttsFile+\" \"+data[ansNum][1], shell=True)\n  bez.stop()\n\ndef debug_message(message):\n  print message\n#  writeFile(message)\n#\u3000pass\n#  sys.stdout.write(message)\n\ndef writeFile(text): # \u30c7\u30d0\u30c3\u30b0\u30d5\u30a1\u30a4\u30eb\u51fa\u529b\u6a5f\u80fd\n  f = open (debugFile,'r')\n  textBefore = \"\"\n  for row in f:\n    textBefore = textBefore + row\n  f.close()\n  f = open (debugFile,'w')\n  f.write(textBefore + text + \"\\n\")\n  f.close()\n\n# \u30b5\u30fc\u30dc\u306e\u521d\u671f\u5316\nbez = bezelie.Control()                 # \u3079\u30bc\u30ea\u30fc\u64cd\u4f5c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u751f\u6210\nbez.moveCenter()                        # \u30b5\u30fc\u30dc\u306e\u56de\u8ee2\u4f4d\u7f6e\u3092\u30c8\u30ea\u30e0\u5024\u306b\u5408\u308f\u305b\u308b\n\n# \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\ndef main():\n  try:\n    subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n    subprocess.call(\"sh \"+ttsFile+\" \"+u\"\u9854\u8a8d\u8b58\u30e2\u30fc\u30c9\", shell=True)\n    stageAngle = 0           # \u30b9\u30c6\u30fc\u30b8\u306e\u521d\u671f\u89d2\u5ea6\n    stageDelta = 5           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u89d2\u5ea6\n    stageSpeed = 8           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u901f\u5ea6\n    bez.moveHead(15)\n    with picamera.PiCamera() as camera:                         # Open Pi-Camera as camera\n      with picamera.array.PiRGBArray(camera) as stream:         # Open Video Stream from Pi-Camera as stream\n        camera.resolution = (640, 480)                          # Display Resolution\n        # camera.resolution = (1280, 720)                       # Display Resolution\n        # camera.resolution = (1920, 1080)                      # Display Resolution\n        camera.hflip = True                                     # Vertical Flip \n        camera.vflip = True                                     # Horizontal Flip\n        while True:\n          if timeCheck(): # \u6d3b\u52d5\u6642\u9593\u3060\u3063\u305f\u3089\u52d5\u304f\n            camera.capture(stream, 'bgr', use_video_port=True)    # Capture the Video Stream\n            gray = cv2.cvtColor(stream.array, cv2.COLOR_BGR2GRAY) # Convert BGR to Grayscale\n            facerect = cascade.detectMultiScale(gray,             # Find face from gray\n              scaleFactor=1.9,                                    # 1.1 - 1.9 :the bigger the quicker &amp; less acurate \n              minNeighbors=3,                                     # 3 - 6 : the smaller the more easy to detect\n              minSize=(100,120),                                   # Minimam face size \n              maxSize=(640,480))                                  # Maximam face size\n            if len(facerect) &gt; 0:\n              for rect in facerect:\n                cv2.rectangle(stream.array,                       # Draw a red rectangle at face place \n                  tuple(rect[0:2]),                               # Upper Left\n                  tuple(rect[0:2]+rect[2:4]),                     # Lower Right\n                  (0,0,255), thickness=2)                         # Color and thickness\n              replyMessage(u\"\u9854\u8a8d\u8b58\")\n            # cv2.imshow('frame', stream.array)                     # \u753b\u9762\u306b\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u5916\u3057\u3066\u304f\u3060\u3055\u3044\n            if cv2.waitKey(1) &amp; 0xFF == ord('q'):                 # Quit operation\n              break\n            stream.seek(0)                                        # Reset the stream\n            stream.truncate()\n            stageAngle = stageAngle + stageDelta\n            if stageAngle &gt; 25 or stageAngle &lt; -25:\n              stageDelta = stageDelta*(-1)\n            bez.moveStage(stageAngle,stageSpeed)\n          else:           # \u6d3b\u52d5\u6642\u9593\u5916\u306f\u52d5\u4f5c\u3057\u306a\u3044\n            subprocess.call('amixer cset numid=1 60% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u8abf\u6574\n            subprocess.call(\"sh \"+ttsFile+\" \"+\"\u6d3b\u52d5\u6642\u9593\u5916\u3067\u3059\", shell=True)\n            print \"\u6d3b\u52d5\u6642\u9593\u5916\u306a\u306e\u3067\u767a\u58f0\u30fb\u52d5\u4f5c\u3057\u307e\u305b\u3093\"\n            sleep (600)   # 10\u5206\u5f85\u6a5f\n            subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u623b\u3059\n        cv2.destroyAllWindows()\n\n  except KeyboardInterrupt: # CTRL+C\u3067\u7d42\u4e86\n    debug_message('keyboard interrupted')\n    bez.moveCenter()\n    bez.stop()\n    sys.exit(0)\n\nif __name__ == \"__main__\":\n  debug_message('---------- started ----------')\n  main()\n  sys.exit(0)<\/pre>\n<p>&nbsp;<\/p>\n<h5>\u30e1\u30a4\u30f3\u30eb\u30fc\u30d7<\/h5>\n<pre class=\"height:200 lang:python range:116-300 decode:true\" title=\"demo_face1.py\">#!\/usr\/bin\/python\n# -*- coding: utf-8 -*-\n# \u9854\u8a8d\u8b58\u30c7\u30e2\n# for Bezelie Edgar\n# for Raspberry Pi\n# by Jun Toyoda (Team Bezelie)\n# from Aug15th2017\n\nfrom datetime import datetime      # \u73fe\u5728\u6642\u523b\u53d6\u5f97\nfrom random import randint         # \u4e71\u6570\u306e\u767a\u751f\nfrom time import sleep             # \u30a6\u30a7\u30a4\u30c8\u51e6\u7406\nimport subprocess                  # \u5916\u90e8\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3059\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\nimport json                        # json\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport csv                         # CSV\u30d5\u30a1\u30a4\u30eb\u3092\u6271\u3046\u30e2\u30b8\u30e5\u30fc\u30eb\nimport sys                         # python\u7d42\u4e86sys.exit()\u306e\u305f\u3081\u306b\u5fc5\u8981\nimport picamera                    # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport picamera.array              # \u30ab\u30e1\u30e9\u7528\u30e2\u30b8\u30e5\u30fc\u30eb\nimport cv2                         # Open CV\u30e2\u30b8\u30e5\u30fc\u30eb    \nimport bezelie                     # \u3079\u30bc\u30ea\u30fc\u5c02\u7528\u30b5\u30fc\u30dc\u5236\u5fa1\u30e2\u30b8\u30e5\u30fc\u30eb\n\ncsvFile   = \"\/home\/pi\/bezelie\/chatDialog.csv\"          # \u5bfe\u8a71\u30ea\u30b9\u30c8\njsonFile  = \"\/home\/pi\/bezelie\/edgar\/data_chat.json\"    # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\nttsFile   = \"\/home\/pi\/bezelie\/edgar\/exec_openJTalk.sh\" # \u97f3\u58f0\u5408\u6210\ndebugFile = \"\/home\/pi\/bezelie\/debug.txt\"               # debug\u7528\n\n# \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\nf = open (jsonFile,'r')\njDict = json.load(f)\nname = jDict['data0'][0]['name']       # \u3079\u30bc\u30ea\u30fc\u306e\u5225\u540d\u3002\nuser = jDict['data0'][0]['user']       # \u30e6\u30fc\u30b6\u30fc\u306e\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3002\n# mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u300262\u304c\u6700\u5927\u5024\u3002\nvol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n# \u5909\u6570\u306e\u521d\u671f\u5316\nalarmStop = False   # \u30a2\u30e9\u30fc\u30e0\u306e\u30b9\u30cc\u30fc\u30ba\u6a5f\u80fd\uff08\u975e\u642d\u8f09\uff09\nwaitTime = 5        # auto\u30e2\u30fc\u30c9\u3067\u306e\u4f1a\u8a71\u306e\u9593\u9694\n\n# OpenCV\ncascade_path =  \"\/usr\/share\/opencv\/haarcascades\/haarcascade_frontalface_alt.xml\" # \u9854\u8a8d\u8b58xml\ncascade = cv2.CascadeClassifier(cascade_path)\n\n# \u95a2\u6570\ndef timeCheck(): # \u6d3b\u52d5\u6642\u9593\u5185\u304b\u3069\u3046\u304b\u306e\u30c1\u30a7\u30c3\u30af\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  awake1Start = jDict['data1'][0]['awake1Start']\n  awake1End = jDict['data1'][0]['awake1End']\n  awake2Start = jDict['data1'][0]['awake2Start']\n  awake2End  = jDict['data1'][0]['awake2End']\n  t = datetime.now()\n  if   int(t.hour) &gt;  int(awake1Start[0:2]) and int(t.hour) &lt;    int(awake1End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake1Start[0:2]) and int(t.minute) &gt;= int(awake1Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake1End[0:2])   and int(t.minute) &lt;= int(awake1End[3:5]):\n    flag = True\n  elif int(t.hour) &gt;  int(awake2Start[0:2]) and int(t.hour) &lt;    int(awake2End[0:2]):\n    flag = True\n  elif int(t.hour) == int(awake2Start[0:2]) and int(t.minute) &gt;= int(awake2Start[3:5]):\n    flag = True\n  elif int(t.hour) == int(awake2End[0:2])   and int(t.minute) &lt;= int(awake2End[3:5]):\n    flag = True\n  else:\n    flag = False # It is not Active Time\n  return flag\n\ndef replyMessage(keyWord):        # \u5bfe\u8a71\n  data = []                       # \u5bfe\u8a71\u30d5\u30a1\u30a4\u30eb\uff08csv\uff09\u3092\u5909\u6570data\u306b\u8aad\u307f\u8fbc\u3080\n  with open(csvFile, 'rb') as f:  # csvFile\u3092\u30aa\u30fc\u30d7\u30f3\n    for i in csv.reader(f):       # \u30d5\u30a1\u30a4\u30eb\u304b\u3089\uff11\u884c\u305a\u3064i\u306b\u8aad\u307f\u8fbc\u3080\n      data.append(i)              # data\u306b\u8ffd\u52a0\n\n  data1 = []                      # data\u304b\u3089\u8cea\u554f\u5185\u5bb9\u304c\u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u4e00\u81f4\u3057\u3066\u3044\u308b\u884c\u3092data1\u3068\u3057\u3066\u629c\u304d\u51fa\u3059\n  for index,i in enumerate(data): # index=\u9023\u756a\n    if unicode(i[0], 'utf-8')==keyWord:  # i[0]\u306fstr\u306a\u306e\u3067utf-8\u306b\u5909\u63db\u3057\u3066\u6bd4\u8f03\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\n      j = randint(1,100)          # \uff11\u304b\u3089\uff11\uff10\uff10\u307e\u3067\u306e\u4e71\u6570\u3092\u767a\u751f\u3055\u305b\u308b\n      data1.append(i+[j]+[index]) # data1=\u8cea\u554f\u5185\u5bb9,\u8fd4\u7b54,\u4e71\u6570,\u9023\u756a\u306e\u30ea\u30b9\u30c8\n\n  if data1 == []:                 # data1\u304c\u7a7a\u3063\u307d\u3060\u3063\u305f\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u8fd4\u3059\n    for index,i in enumerate(data):\n      j = randint(1,100)\n      data1.append(i+[j]+[index])\n\n  maxNum = 0                      # \u8907\u6570\u306e\u5019\u88dc\u304b\u3089\u30e9\u30f3\u30c0\u30e0\u3067\u9078\u51fa\u3002data1\u304b\u3089\u6b04\u6570\u5024\u304c\u6700\u5927\u306a\u3082\u306e\u3092\u9078\u3076\n  for i in data1:\n    if i[2] &gt; maxNum:\n      maxNum = i[2]\n      ansNum = i[3]\n\n  # \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n  f = open (jsonFile,'r')\n  jDict = json.load(f)\n  # mic = jDict['data0'][0]['mic']         # \u30de\u30a4\u30af\u611f\u5ea6\u306e\u8a2d\u5b9a\u3002\n  vol = jDict['data0'][0]['vol']         # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3002\n\n  bez.moveRnd()\n  subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n  subprocess.call(\"sh \"+ttsFile+\" \"+data[ansNum][1], shell=True)\n  bez.stop()\n\ndef debug_message(message):\n  print message\n#  writeFile(message)\n#\u3000pass\n#  sys.stdout.write(message)\n\ndef writeFile(text): # \u30c7\u30d0\u30c3\u30b0\u30d5\u30a1\u30a4\u30eb\u51fa\u529b\u6a5f\u80fd\n  f = open (debugFile,'r')\n  textBefore = \"\"\n  for row in f:\n    textBefore = textBefore + row\n  f.close()\n  f = open (debugFile,'w')\n  f.write(textBefore + text + \"\\n\")\n  f.close()\n\n# \u30b5\u30fc\u30dc\u306e\u521d\u671f\u5316\nbez = bezelie.Control()                 # \u3079\u30bc\u30ea\u30fc\u64cd\u4f5c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u751f\u6210\nbez.moveCenter()                        # \u30b5\u30fc\u30dc\u306e\u56de\u8ee2\u4f4d\u7f6e\u3092\u30c8\u30ea\u30e0\u5024\u306b\u5408\u308f\u305b\u308b\n\n# \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\ndef main():\n  try:\n    subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\n    subprocess.call(\"sh \"+ttsFile+\" \"+u\"\u9854\u8a8d\u8b58\u30e2\u30fc\u30c9\", shell=True)\n    stageAngle = 0           # \u30b9\u30c6\u30fc\u30b8\u306e\u521d\u671f\u89d2\u5ea6\n    stageDelta = 5           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u89d2\u5ea6\n    stageSpeed = 8           # \u30eb\u30fc\u30d7\u3054\u3068\u306b\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u901f\u5ea6\n    bez.moveHead(15)\n    with picamera.PiCamera() as camera:                         # Open Pi-Camera as camera\n      with picamera.array.PiRGBArray(camera) as stream:         # Open Video Stream from Pi-Camera as stream\n        camera.resolution = (640, 480)                          # Display Resolution\n        # camera.resolution = (1280, 720)                       # Display Resolution\n        # camera.resolution = (1920, 1080)                      # Display Resolution\n        camera.hflip = True                                     # Vertical Flip \n        camera.vflip = True                                     # Horizontal Flip\n        while True:\n          if timeCheck(): # \u6d3b\u52d5\u6642\u9593\u3060\u3063\u305f\u3089\u52d5\u304f\n            camera.capture(stream, 'bgr', use_video_port=True)    # Capture the Video Stream\n            gray = cv2.cvtColor(stream.array, cv2.COLOR_BGR2GRAY) # Convert BGR to Grayscale\n            facerect = cascade.detectMultiScale(gray,             # Find face from gray\n              scaleFactor=1.9,                                    # 1.1 - 1.9 :the bigger the quicker &amp; less acurate \n              minNeighbors=3,                                     # 3 - 6 : the smaller the more easy to detect\n              minSize=(100,120),                                   # Minimam face size \n              maxSize=(640,480))                                  # Maximam face size\n            if len(facerect) &gt; 0:\n              for rect in facerect:\n                cv2.rectangle(stream.array,                       # Draw a red rectangle at face place \n                  tuple(rect[0:2]),                               # Upper Left\n                  tuple(rect[0:2]+rect[2:4]),                     # Lower Right\n                  (0,0,255), thickness=2)                         # Color and thickness\n              replyMessage(u\"\u9854\u8a8d\u8b58\")\n            # cv2.imshow('frame', stream.array)                     # \u753b\u9762\u306b\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u5916\u3057\u3066\u304f\u3060\u3055\u3044\n            if cv2.waitKey(1) &amp; 0xFF == ord('q'):                 # Quit operation\n              break\n            stream.seek(0)                                        # Reset the stream\n            stream.truncate()\n            stageAngle = stageAngle + stageDelta\n            if stageAngle &gt; 25 or stageAngle &lt; -25:\n              stageDelta = stageDelta*(-1)\n            bez.moveStage(stageAngle,stageSpeed)\n          else:           # \u6d3b\u52d5\u6642\u9593\u5916\u306f\u52d5\u4f5c\u3057\u306a\u3044\n            subprocess.call('amixer cset numid=1 60% -q', shell=True)      # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u8abf\u6574\n            subprocess.call(\"sh \"+ttsFile+\" \"+\"\u6d3b\u52d5\u6642\u9593\u5916\u3067\u3059\", shell=True)\n            print \"\u6d3b\u52d5\u6642\u9593\u5916\u306a\u306e\u3067\u767a\u58f0\u30fb\u52d5\u4f5c\u3057\u307e\u305b\u3093\"\n            sleep (600)   # 10\u5206\u5f85\u6a5f\n            subprocess.call('amixer cset numid=1 '+vol+'% -q', shell=True) # \u30b9\u30d4\u30fc\u30ab\u30fc\u97f3\u91cf\u3092\u623b\u3059\n        cv2.destroyAllWindows()\n\n  except KeyboardInterrupt: # CTRL+C\u3067\u7d42\u4e86\n    debug_message('keyboard interrupted')\n    bez.moveCenter()\n    bez.stop()\n    sys.exit(0)\n\nif __name__ == \"__main__\":\n  debug_message('---------- started ----------')\n  main()\n  sys.exit(0)<\/pre>\n<p style=\"padding-left: 30px;\">\u30fb\uff11\uff12\uff17~\uff11\uff12\uff18\u884c\u76ee\u3067\u30b9\u30c6\u30fc\u30b8\u3092\u56de\u8ee2\u3055\u305b\u308b\u901f\u5ea6\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u30fb\uff11\uff13\uff12\u884c\u76ee\u306e\u8868\u793a\u30b5\u30a4\u30ba\u306f\u3001\u304a\u4f7f\u3044\u306e\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4\u306e\u89e3\u50cf\u5ea6\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n\u30fb\u8a8d\u8b58\u3059\u308b\u9854\u306e\u30b5\u30a4\u30ba\u3084\u8a8d\u8b58\u7cbe\u5ea6\u3068\u901f\u5ea6\u306e\u30d0\u30e9\u30f3\u30b9\u306f\uff11\uff14\uff12~\uff11\uff14\uff15\u884c\u76ee\u3067\u8abf\u6574\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30fbdemo_face1.py\u306f\u3079\u30bc\u30ea\u30fc\u304c\u9854\u3092\u8a8d\u8b58\u3057\u305f\u3089\u30bb\u30ea\u30d5\u3092\u8a00\u3046\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002\u9a12\u304c\u3057\u3044\u5834\u6240\u306b\u7f6e\u304f\u5834\u5408\u306a\u3069\u3001\u97f3\u58f0\u8a8d\u8b58\u304c\u4f7f\u3048\u306a\u3044\u3068\u304d\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8aad\u307f\u8fbc\u307f #!\/usr\/bin\/python # -*-  &hellip; <a href=\"http:\/\/bezelie.com\/blog\/?page_id=2337\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;\u30d7\u30ed\u30b0\u30e9\u30e0\u89e3\u8aac\u300cdemo_face1.py\u300d&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2337","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=\/wp\/v2\/pages\/2337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2337"}],"version-history":[{"count":6,"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=\/wp\/v2\/pages\/2337\/revisions"}],"predecessor-version":[{"id":2339,"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=\/wp\/v2\/pages\/2337\/revisions\/2339"}],"wp:attachment":[{"href":"http:\/\/bezelie.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}