赞
踩
- 读取图片,并调节图片像素(如(256,256)).
- 获取像素点的颜色(黑色:RGB(0,0,0))
- 转化二进制流写入文件(黑色:1,其余:0)
from PIL import Image im=Image.open('算法数据/t2.jpg') im = im.resize((256, 256), Image.NEAREST) # 调节图片大小 r,g,b = im.split() width,height=im.size fh=open('2.txt','w') for i in range(height): for j in range(width): #获取像素点颜色 color=im.getpixel((j,i)) colorsum=color[0]+color[1]+color[2] if(colorsum == 0): fh.write('1') else: fh.write('0') fh.write('\n') fh.close()
- 读取二进制图像矩阵文件,获取矩阵属性(行和列)
- 将多行矩阵转化为一行
import numpy as np
def open_txt(filename):
fr = open(filename)
width=len(fr.readline().strip("\n"))
height=len(fr.readlines())+1
return width,height
def img2vector(filename,width,height):
fr = open(filename)
binary_stream= np.zeros((1,width*height))
for i in range(height):
lineStr = fr.readline().strip("\n")
for j in range(width):
binary_stream[0,width*i+j] = int(lineStr[j])
return binary_stream
测试:
width,height=open_txt(“2.txt”)
b=img2vector(“2.txt”,width,height)
b
结果:
array([[0., 0., 0., …, 0., 0., 0.]])
- 二进制流转化为二进制图像矩阵
- 用二进制图像矩阵绘图
images = b.reshape(256, 256)
print(images)
import matplotlib.pyplot as plt
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
## 二进制图像矩阵
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 1. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]
""" 左边原图像 右边二进制流绘制图 """
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。