目录
一、马赛克实现
二、人脸马赛克
三、人脸检测
四、多张人脸检测
一、马赛克实现
案例代码如下:
import cv2
import numpy as np
img = cv2.imread('8.jpg')
# 马赛克方式一:缩小图片
# img2 = cv2.resize(img,(600,400))
# # 马赛克方式二:
# img2 = cv2.resize(img,(600,400))
# img3 = np.repeat(img2,10,axis=0) #重复行
# img4 = np.repeat(img3,10,axis=1) #重复列
# 马赛克方式三
img2 = img[::10,::10] #每十个中取出一个像素,取出细节
cv2.namedWindow('img2',flags=cv2.WINDOW_NORMAL)
cv2.resizeWindow('img2',(600,400))
cv2.imshow('img2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、人脸马赛克
注:图像大小不同,对应像素点不同
import cv2
import numpy as np
img = cv2.imread('8.jpg')
img2 = cv2.resize(img,(600,400))
# 进行人为定位,对特定区域进行打码
face = img2[200:100,300:300]
face = face[::10,::10] #每十个中取出一个像素,马赛克
face = np.repeat(face,10,axis = 0) #行方向重负十次
face = np.repeat(face,10,axis = 1) #列方向重复十次
img2[100:300,200:300] = face[:,:,[0,2,1]]
cv2.imshow('img2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、人脸检测
特征:根据眼睛、嘴巴、鼻子、眉毛、耳朵等特征来进行人脸特征提取
import cv2
import numpy as np
#读取图片
img = cv2.imread('8.jpg')
#缩小图片
img = cv2.resize(img,(600,400))
# 人脸特征详细说明
# 级联分类器,检测器,调用级联分类器进行检测
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
faces = face_detector.detectMultiScale(img)
print(faces)
# [[143 151 113 113]]
for x,y,w,h in faces: #for循环可以进行数组的遍历
cv2.rectangle(img,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255],thickness=2) #对人脸画矩形
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyWindow()
四、多张人脸检测
案例代码如下:
import cv2
import numpy as np
#读取图片
img = cv2.imread('nba.jpeg')
# gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#缩小图片
img = cv2.resize(img,(600,400))
# 人脸特征详细说明
# 级联分类器,检测器,调用级联分类器进行检测
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
faces = face_detector.detectMultiScale(img,
scaleFactor=1.05, #缩放
minNeighbors=3)
print(faces)
# [[143 151 113 113]]
for x,y,w,h in faces: #for循环可以进行数组的遍历
cv2.rectangle(img,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255],thickness=2) #对人脸画矩形
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyWindow()
运行结果如下: