社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

马哥Linux运维 • 3 年前 • 447 次点击  

前言


最近天气好冷,感觉整个人都是冰冰的!程序员如何用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的效果比较理想。

二、结果

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


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


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

补充

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

原文链接:blog.csdn.net/qq_44809707

文章转载:Python编程学习圈
(版权归原作者所有,侵删)

点击下方“阅读原文”查看更多

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/121694
 
447 次点击