查看原文
其他

用 Python 写了一个表白神器,照片隐藏表白话语!

点击上方 "Python人工智能技术关注,星标或者置顶
22点24分准时推送,第一时间送达
后台回复“大礼包”,送你特别福利

编辑:乐乐 | 来自:blog.csdn.net/qq_44809707

转自:Python编程学习圈

Pythn人工智能技术(ID:coder_experience)第654期推文

上一篇:女程序员做了个梦,神评论。。。


正文


 大家好,我是Pythn人工智能技术。

前言


最近天气好冷,感觉整个人都是冰冰的!程序员如何用python表白自己的女神呢?我想用最近学的图像处理知识,在照片上加隐藏字(手机正常浏览是一张照片,放大才可以看到里面的文字)

大家也可以用这个代码去表白自己的对象呀。

一、具体过程

1、代码思路

先用cv2中的imread方法读取冰冰的照片,再用PIL的Image方法创建一个相同大小的图像(初始填充白色),最后在图片上每一个块加字。

2、python完整代码

# -*- coding:utf-8 -*-from PIL import Image, ImageDraw, ImageFontimport cv2font_path='./font-family/MiNiJianPangWa-1.ttf'def draw(image_path, draw_text): img = cv2.imread(image_path)#读取图片文件 img_temp = Image.new("RGB", [img.shape[1],img.shape[0]], "white")#以指定的模式和大小创建一个新图像(白色填充),img.shape[1]为像素大小 drawObj = ImageDraw.Draw(img_temp)#创建一个可以在给定图像上绘图的对象。 n = 8#间隔大小 m = 8#字体大小 font = ImageFont.truetype(font_path,size = m) for i in range(0, img.shape[0], n):#通过两个for循环,依次定位到每个文字所在的色块 for j in range(0, img.shape[1], n): drawObj.text([j, i],draw_text[int(j / n) % len(draw_text)],fill = (img[i][j][2], img[i][j][1],img[i][j][0]),font = font) img_temp.save('img_' + image_path)draw('bingbing.jpg', "都是冰冰的")#可以自己更改哦


3、代码补充

font_path需要自己更改,可以去网上下载字体。我试过几个字体,发现一个效果比较好。

搜索公众号顶级算法后台回复“算法心得”,送你一份惊喜礼包。

m和n的值也可以自己更改,不过我试过很多值,发现两者都为8的效果比较理想。

二、结果

这是我用的冰冰的照片(选的照片尽量像素大一点):


这是结果图(手机预览看不到文字)


放大后可以清楚看到文字内容

补充

最后生成的图片放大后可能会失真,文字模糊。我在网上发现一个网站,可以无损放大图片。上传图片,选择放大倍数,选择最高降噪,两分钟左右就可以生成。



你还有什么想要补充的吗?

免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。


技术君个人微信


添加技术君个人微信即送一份惊喜大礼包


→ 技术资料共享

→ 技术交流社群



--END--


往日热文:

Python 自动化办公库清单 (共34个)

10个Python图像处理工具随你选

10 个疯狂的 Python 项目创意

输出好看的表格,就用这个 Python 库!


Python程序员深度学习的“四大名著”:



这四本书着实很不错!我们都知道现在机器学习、深度学习的资料太多了,面对海量资源,往往陷入到“无从下手”的困惑出境。而且并非所有的书籍都是优质资源,浪费大量的时间是得不偿失的。给大家推荐这几本好书并做简单介绍。


获得方式:

1.扫码关注本公众号
2.后台回复关键词:名著

▲长按扫描关注,回复名著即可获取

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存