Opencv2+Python3.7实现人脸检测
Opencv2+Python3.7实现人脸检测
在这里我们将调用摄像头,实时的进行人脸检测,并用绿框将你圈起来。
使用的是opencv2自带的人脸分类模型。
完整代码:
其中的文件路径请替换为你电脑中的路径,找不到就搜名字
import cv2 #Opencv2 一个跨平台的计算机视觉库
capture = cv2.VideoCapture(0) #捕获视频帧 0表示使用当前设备的摄像头作为输入源 cv2.namedWindow("demo") #创建一个名为test的窗口
face_model = cv2.CascadeClassifier( #导入人脸模型 'C:/Users/lenovo/AppData/Local/Programs/Python/Python37-32/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
while capture.isOpened(): #死循环 当摄像头正常开启了 ret,frame = capture.read() #读取帧
face_info = face_model.detectMultiScale( #对帧使用cv2训练好的模型进行多尺度检测 frame, #帧 scaleFactor=1.1, #比例因子 minNeighbors=5, #最小检测到的次数 minSize=(10,10) #目标的最小尺寸 )
for (x,y,w,h) in face_info: #迭代检测到的数据 cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2) #画上一个矩形 cv2.imshow("demo",frame) key = cv2.waitKey(1) & 0xFF if key == 27: #按下esc退出 break
capture.release() cv2.destroyAllWindows() |
需要实现:
获取摄像头视频帧
处理帧
显示帧
获取视频帧
完整代码
capture = cv2.VideoCapture(0) ret,frame = capture.read() |
思维导图
处理帧
完整代码
face_modal = cv2.CascadeClassifier(...) face_info = face_model.detectMultiScale(...) for (x,y,w,h) in face_info: cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2) |
思维导图
显示帧
完整代码
import cv2 #Opencv2 一个跨平台的计算机视觉库
cv2.namedWindow("demo") #创建一个名为test的窗口 frame = cv2.imread("path",0) #0为原图,1为彩色图像,0为灰度图
while True: cv2.imshow("demo",frame) key = cv2.waitKey(1) & 0xFF if key == 27: break
cv2.destroyAllWindows() |
流程图