有图像如图a所示,用以下算法记录图像的像素点分布。先将像素的颜色值进行调整,使之成为一幅黑白图像(如图b所示),再将黑白图像中像素点(0表示黑色,1表示白色)分布以列表形式存储,如[2310,321,1230……]表示先有231个连续的黑色像素,再接着是32个连续的白色像素,再接着是123个连续的黑色像素……,列表中部分数据如图c所示。
实现上述功能的Python代码如下:
#导入库, 代码略
img=np.array(Image.open ("hz.png").convert("L")) #将图像转换为二维矩阵
rows,cols=img.shape #图像尺寸分别赋值,rows表示行数,cols表示列数
for i in range(rows):
for j in range(cols):
ifimg[i,j]>180: #0~255表示256级灰度值,0表示黑色,255表示白色
img[i,j]=1
else:
img[i,j]=0
plt.imshow(img,cmap="gray") #显示灰度图像
plt.show () #弹出包含了图片的窗口
c=img[0,0]; cnt=0; ys=[]
for i in range(rows):
for j in range(cols):
if img[i,j]==c:
______
else:
ys.append(cnt*10+c)
cnt=1
ys.append(cnt*10+c)
print(ys)