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算法资讯。

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

  1. 【Python】Autoviz: 一行代码搞定数据集探索并可视化

    数据集各个特征有什么变化趋势.各个特征之间有何关系,我们可以借助Matplotlib.Seaborn等诸多工具来可视化展示,那么有没有一种工具能一次展示所有的关系了? 本文要介绍的Python工具Au ...

  2. python语音转文字源码_【python3】Python十行代码搞定文字转语音

    都是copy的百度SDK文档,简单说说怎么用. 1.没安装Python的参见此文:Python学习笔记系列 1 --安装调试Python开发软件 2.win+r输入cmd打开命令行,输入:pip in ...

  3. python哪个文字转语音好用_【python3】Python十行代码搞定文字转语音

    都是copy的百度SDK文档,简单说说怎么用. 1.没安装Python的参见此文:Python学习笔记系列 1 --安装调试Python开发软件 2.win+r输入cmd打开命令行,输入:pip in ...

  4. 基于python的opencv图像处理实现对斑马线的检测(最简单的方法!!!几十行代码搞定!!!)

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...

  5. python提取图片中的文字自动填表_如何 提取图片中的文字?这款Python 库 4行代码搞定!...

    OCR是什么? 有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字. 所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息. OCR的 ...

  6. Python 技术篇-3行代码搞定图像文字识别,pytesseract库实现

    我们需要 pillow 和 pytesseract 这两个库,pip install 安装就好. 还需要安装 Tesseract-OCR.exe 然后配置下就好了. 具体的环境配置方法请看 pytho ...

  7. 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!

    来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...

  8. 零基础如何用 15 行 Python 代码搞定网易云热门歌单?

    健身.吃饭.敲代码:等车.撸猫.下午茶--若能佐以合适的音乐当"配餐",总是惬意非常.本文就将带你爬一爬网易云的那些热门歌单! 作者 | 上海小胖 责编 | 仲培艺 心情好或心情坏 ...

  9. About 一行Python代码搞定局域网内文件共享与传输

    一行Python代码搞定局域网内文件共享与传输 前提:环境中有Python安装,并配置环境变量. 1.共享目录:Windows下,在要共享文件目录下,shift+鼠标右键,在此处打开命令行窗口(CMD ...

最新文章

  1. 【转】软件工程师的年终总结2
  2. 激活函数 activation function
  3. [codevs 1343] 蚱蜢(省队选拔赛湖南)
  4. git 只允许 源码_如何阻止离职员工盗窃公司源码?你一定要知道的三种方案
  5. Hibernate的复合主键映射
  6. 腾讯微博发表带图片的微博
  7. ubuntu 20 安装vnc_Windows 远程控制 Ubuntu 系统
  8. P3793-由乃救爷爷【分块,ST表】
  9. 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
  10. spring容器管理对象和new对象
  11. 普罗米修斯监控linux,Prometheus(普罗米修斯)搭建监控
  12. Jscript中文变量乱码,又一次中招 _
  13. git学习笔记(三)
  14. 金融机构如何应对核心系统分布式智能化升级大潮?
  15. macbook WIN10系统安装教程
  16. 植被覆盖度时空变化规律分析实例
  17. GoLang之使用uber-go/dig进行依赖注入
  18. 戴尔微型计算机怎么换硬盘,教你如何给DELL台式电脑换硬盘
  19. DELPHI 旧控件安装到 DELPHI11 新版环境的操作
  20. ✖ 48 problems (48 errors, 0 warnings) 45 errors and 0 warnings potentially fixable with the `--fix

热门文章

  1. ORACLE视图的修改
  2. 支持向量机(一)(线性可分支持向量机和硬间隔最大化)
  3. 如何关闭快捷键ctrl+alt+方向键旋转屏幕
  4. 3DMAX高级弯曲插件使用教程
  5. openLDAP安装经验分享
  6. 清华北大计算机考研报录比,2020年考研,清华北大报考人数对比,占考研总人数14%...
  7. 应届本科毕业生什么时候找工作比较合适
  8. 什么时候该考虑线程安全问题 侵立删
  9. Objective-C基础——面对对象语法01
  10. 机器人工程的工作与考研之困惑“学历与待遇”补充