大创项目是图像识别,第一个任务是将一个图片转换成二值图像
在这里插入图片描述
之前用过python的numpy和turtle,这次要用到图像库PIL的类Image,也算是刚刚从零开始学起
整体效果(用01串表示图像)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原理很简单:将图片中黑色部分用0,其余部分用1
详细过程:
先读取照片,获取图片的像素,然后对像素进行缩放,再对缩放后的照片黑白(如果原本是彩色图)。
然后一次获取图像中每一点像素的RGB颜色值,若为黑色则将该像素替换为0,其余为1
用一个字符串存储,最后按照指定长宽输出
用到的工具:
im.getpixel((j, i))
#getpixel是获取图像中某一点像素的RGB颜色值
im = im.resize((width, height))
#resize修改图片尺寸

im = im.convert('1')
#用于不同模式图像之间的转换
其中1为获得二值图像
模式L为灰色图像

我们用原图像的长宽乘以常数(代码中用SCALE)来实现缩放

from PIL import Image

SCALE = 0.3
#等比例缩放

def get_char(pixel, blank_char='0', fill_char='1'):
   if pixel == 0:
       return blank_char
   else:
       return fill_char



im = Image.open(r"ma.jpg")
size = im.size
#获取图片的像素
#size[0]*size[1] 横宽像素
width, height = int(size[0] * SCALE), int(size[1] * SCALE)
im = im.resize((width, height))#修改图片尺寸
im = im.convert('1')#获得二值图像

txt = ""
for i in range(height):
    for j in range(width):
        txt += get_char(im.getpixel((j, i)))#getpixel是获取图像中某一点像素的RGB颜色值
    txt += '\n'
#print(txt)
f = open(r'gou.txt', 'w')

print(txt, file=f)

f.close()