使用PIL库完成图片批量读入灰度化处理输出矩阵并二值化

首先按照指定路径与图片命名格式读入图片,由于我遇到的问题中存在多个图片集合,并且每幅图片均以如001.bmp这样的格式存在故,编写以下函数.参数n为图片数量,st为数据集的编号.输出为图片对象的列表.

def generate(i):
    if i<10:
        return '00'+str(i)+'.bmp'
    if i<100:
        return '0'+str(i)+'.bmp'
    return str(i)+'.bmp'

def read_im(n,st):
    im=[]
    for i in range(0,n+1):
        path='./data/set'+str(st)+'/'+generate(i)
        im.append(Image.open(path))
    return im

在批量读入图片后,我们可以进行第一步操作,将图片转换为灰度形式

def step_01(im):
    out=[]
    for img in im:
        tpic=img.convert('L')
        out.append(tpic)
    return out

然后根据需要可将图片转换为narray进行处理.

def step_02(im):
    out=[]
    for img in im:
        mat=np.array(img)
        out.append(mat)
    return out

在转换为narray后可通过设定阈值,置数实现矩阵的二值化,这里我设为100.

def step_03(im):
    out=[]
    for img in im:
        o_img=[]
        for row in img:
            o_row=np.array([0 if x>100 else 1 for x in row])
            o_img.append(o_row)
        out.append(np.array(o_img))
    return out

在调用上述函数时注意需载入需要的包

import numpy as np
from  PIL import Image
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值