图像马赛克
我们先看看原图效果
第一步,检测出人脸的位置,OpenCV提供harr级联检测器检测人脸。
face_datect = cv.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
第二步,实现马赛克效果
import cv2 as cv
import numpy as np
#1、读取图像
img = cv.imread('./img/nba1.jpg')
#2、灰度转换
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
#3、 harr级联
face_detect = cv.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
#4、返回人脸位置信息
face = face_detect.detectMultiScale(gray,1.01,3,maxSize=(40,40))
# 5、实现马赛克
for x,y,w,h in face:
#图片: 高度,宽度,像素
face = img[y:y+h,x:x+w]
# 像素取舍,10步长
face = face[::10,::10]
# 像素复制
face = np.repeat(face,10,axis=0)
face = np.repeat(face,10,axis=1)
img[y:y+h,x:x+w] = face[:w,:h]
cv.imshow('img',img)
cv.waitKey(0)
cv.destroyAllWindows()
结果