Python图像处理之十行代码搞定圆型头像生成

1 引言

最近有小伙伴咨询怎么用python来制作一个好看的圆形头像,如下所示的效果:请添加图片描述左侧为原图,右侧为我们圆形头像生成图。
自从学了python来做图像处理,这种简单图像处理使用10行代码即可搞定。

2 处理步骤

思考我们遇到的问题,换句大白话就是如何在图像里扣出一块圆形区域(ROI 感兴趣区域)。嗯嗯,比较直观的想法是采用mask掩膜的方式来实现了。
1)首先我们来生成一个圆形掩码
代码如下:

roi = np.zeros(image.shape[:2], np.uint8)
roi = cv2.circle(roi, (200, 200), 150, 255, cv2.FILLED)

结果如下:
请添加图片描述
2) 生成全白背景图和掩码后的图
代码:

mask = np.ones_like(image) * 255
mask1 = cv2.bitwise_and(mask, image, mask=roi)  # roi内保留  其他置黑
mask2 = cv2.bitwise_and(mask, mask, mask=~roi)  # roi外保留 roi内置黑

结果如下:
请添加图片描述
左侧为mask1的图像,右侧为mask2的图像

3) 生成圆形头像图
有了上述mask1和mask2的结果图,只需要将两幅图相加即可得到最终结果:

out = mask1 + mask2
cv2.imshow('out', out)
cv2.waitKey(0)

结果如下:
请添加图片描述

3 完整代码

本节完整代码如下所示:

import cv2
import numpy as np

# Original image
image = cv2.imread('./sample1.jpg')
# Circular ROI in original image; must be selected via an additional mask
roi = np.zeros(image.shape[:2], np.uint8)
roi = cv2.circle(roi, (200, 200), 150, 255, cv2.FILLED)
# Target image; white background
mask = np.ones_like(image) * 255
# Copy ROI part from original image to target image
mask1 = cv2.bitwise_and(mask, image, mask=roi)
mask2 = cv2.bitwise_and(mask, mask, mask=~roi)
out = mask1 + mask2
cv2.imshow('out', out)
cv2.waitKey(0)

4 其他示例

本节的圆形头像生成结果图如下:

可爱的皮卡丘:
请添加图片描述
帕丁顿熊:
请添加图片描述

5 总结

通过上述简单步骤,我们通过利用圆形掩码,进而实现了圆形头像效果图,可以愉快地拿来做头像啦!

您学肥了嘛?

关注公众号《AI算法之道》,获取更多AI算法资讯。

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值