用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()

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值