python实现用记事本显示人脸图像

阅读: 评论:0

python实现用记事本显示人脸图像

python实现用记事本显示人脸图像

用记事本显示人脸图像

前言:

这段时间,抖音上经常出现有”大神“自称花了几天用记事本打字符打出了人脸(或其他照片),一时引起大家的关注。很显然,谁会无聊到花那么长时间弄这个,进而有人提出使用啥啥啥软件,作为一个小程序猿,使用别人的软件也是不可能的,肯定要自己写代码实现啊!

开发语言:

python代码(谁让它那么好用呢)

思路:

使用opencv库读取图片,当然也有其他库可以用,自己喜欢就好。例如下图:

之后我们载处理成灰度图,进行二值化处理,即整个图的所有像素点非黑即白,得到下面的结果:

然后就简单了,先新建一个记事本。

然后遍历这个二值图,发现是黑色的地方,即像素值为0的地方,那么我们在记事本的相应位置写入一个字符(如数字7),发现是白色的地方,即像素值为255的地方,我们写入字符空格。然后就行啦!

代码:

下面贴出整个代码,相应的解释都用注释写出来了,仔细看还是比较简单的

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from cv2 import cv2
import string
import random# 因为图片有大有小嘛,图片太大的话,当你把记事本的字体设置成最小的时候
# 屏幕都不能去容纳记事本一行的字符。
# 本来图片的第一行对应的字符假如有1000个,那你的电脑屏幕显示记事本内容时
# 一行最多显示500个字符,那这样就导致剩下的500个字符要么还是在第一行
# 但是你得拖动滚动条去看,要么被自动换行放到第二行去了
# 所以我们有必要去知道自己电脑记事本横向和纵向能显示的最多字符数
MAX_WIDTH = 335
MAX_HEIGHT = 98def handle_image(img_path):# 读取图片img = cv2.imread(img_path)# 将图片转化成灰度图gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)# 将灰度图转化成二值图,像素值超过127的都会被重新赋值成255ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)return binarydef main():# 得到二值图img = handle_image(r'2.jpg')# 这里就是一开始说的图片大小问题,我们直接强制设置图片的大小img = size(img, (334, 98))height, width = img.shape# 这里chars = 26小写字母+26大写字母+0到9共10个数字+后面那些标点符号chars = string.ascii_letters + string.digits + r'~!@#$%^&*()_+{}[]|><./'# 转化成列表chars = list(chars)# 遍历图像with open(r&#', 'w', encoding='utf-8') as f:for row in range(0, height):for col in range(0, width):# 像素值为0即黑色,那么随便选个字符去写入到txt文件if img[row][col] == 0:ch = random.choice(chars)f.write(ch)# 否则写入空格else:f.write(' ')f.write('*n')if __name__ == '__main__':main()

结果:

说明:记得调整记事本字体,我的如下:

然后效果图如下:写入的全是字符7

再放一张:写入的是随便取的字符

后记:

我写的比较简单,只能处理像这种比较简单的图,然后人物都比较突出,背景简单。所以在实验的时候注意选择比较单调的人物图,复杂的效果不好。

本文发布于:2024-02-01 14:18:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676833937201.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   记事本   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23