一,OpenCV:
OpenCV是跨平台计算机视觉库,提供了Python、Ruby、MATLAB等语言的接口,它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,应用的领域:
1、人机互动
2、物体识别
3、图像分割
4、人脸识别
5、动作识别
6、运动跟踪
7、机器人
8、运动分析
9、机器视觉
10、结构分析
11、汽车安全驾驶
二,人脸检测需要用到的知识点:
1.读取图片:
img=cv2.imread('cat.jpg')
2.显示图像::
cv2.imshow('image',img)
3.等待时间,毫秒级,0表示任意键终止:
cv2.waitKey(0) #1000 设置1000毫秒
4.图像展示函数封装:
def cv_show(name,img)
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destoryAllWindow()
5.图像的属性:
#cv2.IMREAD_COLOR 彩色图像
#cv2.IMREAD_GRAYSCALE 灰度图像
img=cv2.imread('dog.jpg',cv2.IMREAD_GRAYSCALE)
img
6.打开摄像头:
vc=cv2.VideoCapture(0) ##0表示开启自己电脑摄像头
7.图像的保存:
cv2.imwrite('girl.png',img)
二,人脸实时检测代码:
import cv2
import numpy as np
win = cv2.namedWindow('dzd',cv2.WINDOW_NORMAL)
cv2.resizeWindow('dzd',640,200)
#打开摄像头
v = cv2.VideoCapture(0)
# v =cv2.VideoCapture('./dzd2.mp4')
win = cv2.namedWindow('dzd',cv2.WINDOW_NORMAL)
cv2.resizeWindow('dzd',1000,680)
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
#视频是由一张张图片组成,一张就是一帧
num=1
while True:
flag,frame=v.read()
if not flag:
break
frame=cv2.resize(frame,(400,400))
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
face_zones = face_detector.detectMultiScale(gray,scaleFactor = 1.1,
minNeighbors = 3)
for x,y,w,h in face_zones[:1]:
cv2.rectangle(frame,pt1 = (x,y),pt2 = (x+w,y+h),color = [0,0,255],thickness=2)
cv2.imshow('dzd',frame)
#是否保存捕获到的头像
# if len(face_zones)>=1:
# f=input('是否保存这张图片?Y/N')
# if f=='Y':
# face=frame[y+2:y+h+1,x+2:x+w-1]
# face=cv2.resize(face,(100,100))
# cv2.imwrite('./%d.jpg'%(num),face)
# num+=1
# if f=='t':
# break
key=cv2.waitKey(1)
if key==ord('q'):
break
v.release()
cv2.destroyAllWindows()