首先按照指定路径与图片命名格式读入图片,由于我遇到的问题中存在多个图片集合,并且每幅图片均以如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