用python将图片转换成二值图像

大创项目是图像识别,第一个任务是将一个图片转换成二值图像
在这里插入图片描述
之前用过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()
全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务