import cv2
import tkinter
import tkinter.messagebox
import numpy as np
def face():
#加载人脸识别的级分类器
faceCascade = cv2.CascadeClassifier('D:/python/opencv/sources/data/haarcascades/haarcascade_frontalface_alt_tree.xml')
#调用摄像头
cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
tkinter.messagebox.showinfo('提示', '注意:按下s后即可拍照。')
tkinter.messagebox.showinfo('提示', '第一张图片若脸部未被框选住,请按空格键退出后重新进入')
num=1
#检测摄像头是否打开
while (cap.isOpened()):
#获取摄像头每帧图像
ret,frame = cap.read()
#显示所获取的摄像头的每帧图像
cv2.imshow("Video",frame)
k = cv2.waitKey(1)
#按下空格后进入
if k==32:
#关闭摄像头
cap.release()
a = tkinter.messagebox.showinfo('提示', '结束')
break
if k== ord('s'):
cv2.imwrite("D:/python/opencv/shuju/"+ids+"/"+ids+str(num)+".png",frame)
img = cv2.imread("D:/python/opencv/shuju/"+ids+"/"+ids+str(num)+".png")
#识别人脸
faces = faceCascade.detectMultiScale(img,1.15)
#框出人脸
for(x,y,w,h) in faces:
#绘制人脸位置的方框
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,2550),5)
cv2.imshow("img",img)
num += 1
cv2.waitKey()
if num==4:
a = tkinter.messagebox.showinfo('提示', '已录取完毕')
break
for cishu in range(1,100):
csishu = 1
if cishu <int(num):
cishu+1
print(cishu)
else:
print("结束")
exit()
cv2.destroyAllWindows()
face()