OpenCv之人脸操作

目录

一、马赛克实现

二、人脸马赛克

三、人脸检测

四、多张人脸检测


一、马赛克实现

案例代码如下:

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()

运行结果如下:

OpenCv之人脸操作_第1张图片 

你可能感兴趣的:(Opencv,opencv,人工智能,计算机视觉)