5.python-opencv人脸马赛克

5.python-opencv人脸马赛克

第一章 python-opencv-图片导入和显示
第二章 python-opencv图像简单处理
第三章 python-opencv图像mask掩膜处理
第四章 python-opencv图像马赛克


文章目录

  • 5.python-opencv人脸马赛克
  • 完整代码
    • 方法一
    • 方法二
    • 方法三
  • 代码运行结果
    • 1.方法一结果
    • 2.方法二结果
    • 3.方法三结果
  • 总结


完整代码

上一章我们讲解了如何将图像进行马赛克处理,那么这一章是使用上一章的方法将图像中的人脸进行马赛克处理,与上一章不同的是需要先找到图像中人脸的位置,然后将人脸的区域进行模糊处理。

方法一

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.方法三结果


总结

本文主要讲解了如何将图像中的部分区域进行马赛克处理,首先利用切片操作获取区域,然后利用第四章讲解的三种马赛克方法对区域进行模糊处理,最后将模糊区域替换为原始图像中的区域。

你可能感兴趣的:(python-opencv,opencv,python,计算机视觉)