来源:关于数据分析与可

可能对于女生来说,有一张手绘风格的自拍照也是一件值得开心的事儿,或许对男生来说也是一样的道理,今天小编就来分享一下如何用Python来生成一张手绘风格的自拍照,并且加上我们所要用到的logo,我们用到的是Python当中的opencv模块

Opencv + matplotlib

本方法需要用到的库:cv2、matplotlib。cv2是基于OpenCV的图像处理库,用来对图像进行各种操作,包括图片的旋转翻转、两张图片的合并等等,而matplotlib库则是用来进行数据可视化的模块,相信大家也都熟悉,

Opencv函数介绍,

介绍一下cv2的三个基本函数:cv2.imread(image),cv2.imshow()以及cv2.imwrite()分别用来读取图片、显示和保存图片

# 读取图片
img = cv2.imread('test1.png')
# 显示图片
cv2.imshow('test1.png',img)
cv2.waitKey(0)
# 保存图片
cv2.imwrite('test_2.png', img)

绘制素描风格的照片

然后我们来看一下完整的代码

# 读取图片
img=cv2.imread("test1.jpg")
# 将图像转化成灰度图
grey_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
invert_img=cv2.bitwise_not(grey_img)
# 对图片进行模糊化处理
blur_img=cv2.GaussianBlur(invert_img, (111,111),0)
invblur_img=cv2.bitwise_not(blur_img)
sketch_img_test=cv2.divide(grey_img,invblur_img, scale=256.0)
# 保存好素描风格的图片
cv2.imwrite('sketch1.png', sketch_img)

然后来为大家解释一下上面代码的大致意思,也就是在读取图片之后,将彩色的图片转换成灰度图,然后给灰度图进行模糊化处理之后输出,最后出来的结果如下图所示,我们用matplotlib模块中的相关方法将两张图同时显示出来

plt.figure(figsize=(12,8))
plt.subplot(1,2,1)
plt.title('Original_Image', size=10)
plt.imshow(RGB_img)
plt.axis('off')
plt.subplot(1,2,2)
plt.title('Sketch_Image', size=10)
rgb_sketch_test1=cv2.cvtColor(sketch_img_test, cv2.COLOR_BGR2RGB)
plt.imshow(rgb_sketch_test1)
plt.axis('off')
plt.show()

将logo也添加到图片当中去

素描风格的图片做出来了之后,小编又想,是不是再给图片上一个logo会显得更好一些呢?说干就干,完整的代码如下

# 加载两张图片
img1 = cv2.imread('sketch1.png')
img2 = cv2.imread('python1.png')
# 将logo放在img1的左上角,因此将image的左上角圈出来给logo用
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols]
# 将logo图变成灰度图
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
# 将img1左上角圈出来的区域和logo图合并到一块儿
img1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
img2_fg = cv2.bitwise_and(img2,img2,mask = mask)
dst = cv2.add(img1_bg,img2_fg)
img1[0:rows, 0:cols] = dst
# 显示最后的结果出来
cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

最后出来的结果我们看一下,

---------End---------

顺便给大家推荐下我的微信视频号「Python数据之道」,欢迎扫码关注。

Python趣味编程 | 看看如何用Python生成素描风格的自拍照,并且加上Logo相关推荐

  1. python趣味编程100例-儿童Python趣味编程课程

    儿童Python趣味编程课程 南京杜恩培训隶属于南京卡尔威特教育咨询有限公司,秉承"以人为本"的办学宗旨,致力于给每一位前来学习的学员专业优质的服务.中心成立于2002年,在南京已 ...

  2. python趣味编程与精彩实例-python趣味编程100例(99个)

    [实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...

  3. python趣味编程与精彩实例-python趣味编程

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! linux 提供了一个定时任务工具crontab,windows提供了一个定时任务 ...

  4. python录入学生信息网_干货满满 | Python趣味编程教学实践

    Python趣味编程教学实践 近几年间,Python 的火热有目共睹,在IEEE Spectrum 2020 编程语言 Top 10排行榜中,Python位居第一.这是因为Python 与人工智能.机 ...

  5. python趣味编程表白_【暖心一笑】Python趣味编程:定时给Ta讲笑话

    原标题:[暖心一笑]Python趣味编程:定时给Ta讲笑话 大四的生活就是这么无聊,我琢磨着也学了这么多东西了,为啥不能用自己的知识来给生活找点乐子呢?我想反正每天都要给Ta问候一声早安,为何不同时讲 ...

  6. python趣味编程10例-python趣味编程100例(99个)

    [实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...

  7. python趣味编程10例-Python趣味编程与精彩实例

    Python趣味编程与精彩实例 共19 章,前12章主要以Python 基础知识如文件创建.输出与变量.输入与判断.运算符和循环.列表和字典.函数编程.pygame的各种知识为主,13-19章则以游戏 ...

  8. python精彩编程200例-python趣味编程100例(99个)

    [实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...

  9. python精彩编程200例-Python趣味编程与精彩实例

    Python趣味编程与精彩实例 共19 章,前12章主要以Python 基础知识如文件创建.输出与变量.输入与判断.运算符和循环.列表和字典.函数编程.pygame的各种知识为主,13-19章则以游戏 ...

最新文章

  1. 一级指针和二级指以及(void**)在双链表中的应用
  2. SCCM 2012系列9 补丁分发上
  3. 最后2周 | 高级转录组分析和R语言数据可视化第十一期 (报名线上课还可免费参加线下课)...
  4. Cocos2D粒子发射器的纹理
  5. 推荐10款来自极客标签的超棒前端特效[第五期]
  6. 窥探黑盒-卷积神经网络的可视化
  7. linux twiki 添加权限,Linux安装TWiki
  8. 关于质量的联想:消费示范效应
  9. 让TFS忽略packages文件夹的更改
  10. 恐龙机器人钢索恐龙形态_恐龙一直是以僵尸形态出现的,它们的真面貌可能把人萌翻...
  11. 5年外包码农,拿到阿里offer,成功上岸,凭什么?
  12. 红包不是你想送就能送 摩拜物联网技术成行业壁垒
  13. 托管系统的mysql设计_PHP+MySQL托管中心管理系统的设计与实现
  14. Python让繁琐工作自动化——chapter18 GUI控制键盘与鼠标
  15. javascript下载_免费JavaScript下载
  16. windows server上通过关闭端口有效防治勒索病毒
  17. git 解决合并冲突
  18. ios接入GameCenter登录
  19. 今天给大家分享下收集的一些文案:日常文案系列合集,收藏备用
  20. IDEA主题配置--- 炫酷的主题字体颜色设置(基于Intellij IDEA 2018)

热门文章

  1. 拓嘉辰丰:拼多多订单退款流程有哪些?
  2. 怎么利用粉丝圈这个微信社区工具做好社群营销?我们是做教育行业
  3. 位图与普通图片的区别
  4. 第一章:第一节数据载入及初步观察-课程
  5. 接近8000字的Spring/Spring常用注解总结
  6. Towify如何快速生成app安装教程
  7. MySQL之MVCC原理
  8. 部件级、处理机级和处理机间流水线
  9. 2345浏览器兼容性设置在哪里
  10. 图像生成 - 使用BigGAN在Imagenet数据集上生成高质量图像。