安装
环境:python3.6.5
opencv版本:3.4.1.15
扩展包版本:3.4.1.15
最好开一个虚拟环境去安装。什么是虚拟环境?一句话说就是为了防止一个环境时,依赖冲突。从而开辟的另一个副环境。创建虚拟环境方法:我直接在pycharm上新建项目时可以直接选择。其他创建方式自行百度。
还不懂虚拟环境的话直接移步这里
人脸识别代码
import cv2
if __name__ == '__main__':
img = cv2.imread("3.jpg")
img = cv2.resize(img, None, fy=0.5, fx=0.5)
face_data = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
faces = face_data.detectMultiScale(img)
for x, y, w, h in faces:
cv2.rectangle(img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255))
cv2.imshow("co", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果图:
打马赛克代码
import cv2
import numpy as np
if __name__ == '__main__':
img = cv2.imread("3.jpg")
img = cv2.resize(img, None, fy=0.5, fx=0.5)
face_data = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
faces = face_data.detectMultiScale(img)
for x, y, w, h in faces:
mask = None
mask = img[y:y+h, x:x+w]
mask = mask[::6, ::6]
mask = np.repeat(mask, 6, axis=0)
mask = np.repeat(mask, 6, axis=1)
img[y:y+h, x:x+w] = mask[:h, :w]
cv2.imshow("co", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果图
视频中人脸识别代码
import cv2
if __name__ == '__main__':
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, img = cap.read()
face_data = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
faces = face_data.detectMultiScale(img)
for x, y, w, h in faces:
cv2.rectangle(img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255))
cv2.imshow("video", img)
if cv2.waitKey(10) == ord('q'):
break
cv2.destroyAllWindows()
重点
使用github中opencv别人训练好的haarcascade_frontalface_alt.xml。
视频相当于一张一张照片
opencv中颜色排序是BGR
如果想要修改人脸识别时准确度,可以调整detectMultiScale方法中scaleFactor默认1.1和minNeighbors默认3