相机视频实时人脸追踪检测
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image, ImageDraw, ImageFont
#查询opencv中是否含有所需xml文件
#print(cv._file_)
#显示中文
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
# 判断是否OpenCV图片类型
if (isinstance(img, np.ndarray)):
img = Image.fromarray(cv.cvtColor(img, cv.COLOR_BGR2RGB))
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(img)
# 字体的格式
fontStyle = ImageFont.truetype(
"font/simsun.ttc", textSize, encoding="utf-8")
# 绘制文本
draw.text((left, top), text, textColor, font=fontStyle)
# 转换回OpenCV格式
return cv.cvtColor(np.asarray(img), cv.COLOR_RGB2BGR)
if __name__ == '__main__':
cap = cv.VideoCapture(0)
while(cap.isOpened()):
ret,frame = cap.read()
if ret == True:
gray = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
face_cas.load("haarcascade_frontalface_default.xml")
face_cas.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32,32))
for faceRect in faceRects:
x,y,w,h = faceRect
cv.rectangle(frame,(x,y),(x+h,y+w),(0,255,0),3)
img=cv2ImgAddText(frame,"帅哥",x-5,y-30,(0,255,0),30)
#cv.imshow("frame",frame)
cv.imshow("img",img)
if cv.waitKey(1)&0xFF == ord('q'):
break
cap.release()
cv.destroyAllWindows()
结果出来后确实很神奇,其中的原理还应该继续深入的去学习,希望可以帮助到大家。。。