5.python-opencv人脸马赛克
第一章 python-opencv-图片导入和显示
第二章 python-opencv图像简单处理
第三章 python-opencv图像mask掩膜处理
第四章 python-opencv图像马赛克
完整代码
上一章我们讲解了如何将图像进行马赛克处理,那么这一章是使用上一章的方法将图像中的人脸进行马赛克处理,与上一章不同的是需要先找到图像中人脸的位置,然后将人脸的区域进行模糊处理。
方法一
import cv2
if __name__ == '__main__':
# 加载图片
img = cv2.imread('./tong.jpg')
#将人脸切片,获取人脸的区域
face = img[100:400, 200:500]
# 利用马赛克方法一
face = cv2.resize(face, (30, 30))
face = cv2.resize(face, (300, 300))
# 将马赛克的人脸区域替换原始图像的人脸区域
img[100:400, 200:500] = face
cv2.imshow('picture', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
方法二
import cv2
if __name__ == '__main__':
# 加载图片
img = cv2.imread('./tong.jpg')
# 将人脸切片,获取人脸的区域
face = img[100:400, 200:500]
# 利用马赛克方法二
face = cv2.resize(face, (30, 30))
face = np.repeat(face, 10, axis=0)
face = np.repeat(face, 10, axis=1)
# 将马赛克的人脸区域替换原始图像的人脸区域
img[100:400, 200:500] = face
cv2.imshow('picture', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
方法三
import cv2
if __name__ == '__main__':
# 加载图片
img = cv2.imread('./tong.jpg')
# 将人脸切片,获取人脸的区域
face = img[100:400, 200:500]
# 利用马赛克方法三
face = face[::10,::10]
face = np.repeat(face, 10, axis = 0)
face = np.repeat(face, 10, axis = 1)
# 将马赛克的人脸区域替换原始图像的人脸区域
img[100:400, 200:500] = face
cv2.imshow('picture', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码运行结果
1.方法一结果
2.方法二结果
3.方法三结果
总结
本文主要讲解了如何将图像中的部分区域进行马赛克处理,首先利用切片操作获取区域,然后利用第四章讲解的三种马赛克方法对区域进行模糊处理,最后将模糊区域替换为原始图像中的区域。