当前位置:   article > 正文

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

图片转二进制流

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

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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

测试:
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')
  • 1
  • 2
  • 3
  • 4
## 二进制图像矩阵
[[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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/125292
推荐阅读
相关标签
  

闽ICP备14008679号