'''
实验名称：猫脸检测（使用USB摄像头）
实验平台：核桃派1B
'''

import cv2, time

#加载猫脸检测级联分离器，注意路径不能含有中文字符
catFaceCascade = cv2.CascadeClassifier('data/haarcascade_frontalcatface.xml')

cam = cv2.VideoCapture(1) # 打开USB摄像头

#降低分辨率能提高识别速度,可以设置为480x320或320x240
cam.set(3,480) # 设置采集图像宽为480
cam.set(4,320) # 设置采集图像高为320

 
#计算FPS（每秒帧率参数）
start = 0
end = 0

while True:
    
    start = time.time() #记录开始时间
    
    retval, img = cam.read() # 从摄像头中实时读取图像

    #检测出所有猫脸
    catFaces = catFaceCascade.detectMultiScale(img, 1.15)

    #遍历所有结果
    for (x, y, w, h) in catFaces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 3) #画框
            
    end = time.time() #记录结束时间
    
    #计算FPS(每秒帧率),结果取整数
    fps = round(1/(end-start))
    print('FPS: ', fps)
    
    #图像上写字符
    cv2.putText(img, "FPS: "+ str(fps), (20, 70), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 5)
    
    cv2.imshow('result', img) #显示图像
    
    key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒，防止阻塞    
    if key == 32: # 如果按下空格键，打断退出
        break
    
cam.release() # 关闭摄像头
cv2.destroyAllWindows() # 销毁显示摄像头视频的窗口



    