运行效果:
这是拿着手机识别的 真人应该更清晰一点
源码:
import cv2 as cv
from PIL import Image, ImageDraw, ImageFont
import numpy as np
def jianc(img):
hui = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
fen = cv.CascadeClassifier('D:/python/Lib/site-packages/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml') # 分类器
face = fen.detectMultiScale(hui)
for x, y, a, b in face:
cv.rectangle(img, (x, y), (x + a, y + b), color=(0, 255, 0), thickness=2)
# 输出汉字
if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型
img = Image.fromarray(cv.cvtColor(img, cv.COLOR_BGR2RGB))
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(img)
# 字体的格式
fontStyle = ImageFont.truetype(
"simsun.ttc", 30, encoding="utf-8")
# 绘制文本
draw.text((x, y), "你谁啊", (255, 0, 0), font=fontStyle)
img = cv.cvtColor(np.asarray(img), cv.COLOR_RGB2BGR)
cv.imshow('ming', img)
#读取摄像头
cap=cv.VideoCapture(0)
while True:
flag,frame=cap.read()#一帧
jianc(frame)
# cv.imshow('ming', frame)
if cv.waitKey(1)&0xFF==ord('q'):
break
cap.release()
cv.destroyAllwindows()