图片和二进制流之间的转化

图片和二进制流之间的转化

1.图片—>二进制图像矩阵
  • 读取图片,并调节图片像素(如(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()

2.二进制图像矩阵—>二进制流
  • 读取二进制图像矩阵文件,获取矩阵属性(行和列)
  • 将多行矩阵转化为一行
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.]])

3.二进制流—>图片
  • 二进制流转化为二进制图像矩阵
  • 用二进制图像矩阵绘图
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.]]
""" 	左边原图像    右边二进制流绘制图     """

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值