大创项目是图像识别,第一个任务是将一个图片转换成二值图像

Python怎么把图片变成透明的 python图片转换_Image


之前用过python的numpy和turtle,这次要用到图像库PIL的类Image,也算是刚刚从零开始学起

整体效果(用01串表示图像)

Python怎么把图片变成透明的 python图片转换_缩放_02


Python怎么把图片变成透明的 python图片转换_Image_03


Python怎么把图片变成透明的 python图片转换_缩放_04


原理很简单:将图片中黑色部分用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()