前回はbottle.pyからJavaのプログラムを呼び出してみたが、同じ手法でブラウザでアクセスされたらWebカメラの画像を取得し、OpenCVで顔画像認識してカメラの前にいる人数を返すサーバを書いてみた。
前回はPython3で書いたが、今回はPython2.7なのと、import cv,cv2と書いてるのがダサい。。。
from bottle import route, run, template
import cv,cv2
import time
@route('/cv')
def index():
cnt = 0
cap = cv2.VideoCapture(0)
time.sleep(0.1)
ret,im = cap.read()
cv2.imwrite("camera.jpg",im)
cap.release()
cascade = cv.Load("haarcascade_frontalface_default.xml")
cvim = cv.LoadImage("camera.jpg")
faces = cv.HaarDetectObjects(cvim, cascade, cv.CreateMemStorage())
for (x,y,w,h),n in faces:
cnt = cnt + 1
cv.Rectangle(cvim, (x,y), (x+w,y+h), 255)
cv.SaveImage('dst.jpg',cvim)
return template('{{cnt}}', cnt=cnt)
run(host='127.0.0.1', port=8080)