代码之家  ›  专栏  ›  技术社区  ›  user1982824

Python:将原始图像数据转换为灰度

  •  0
  • user1982824  · 技术社区  · 10 年前

    我将原始图像数据以这样的格式存储在文本文件中,我希望将其制作为2D阵列并将其转换为灰度。

    0
    0
    0
    0
    24
    243
    227
    223
    224
    225
    227
    228
    228
    

    我想做的是获取这些数据,将其转换为灰度,并显示图像。我的计划是使用numpy。。。我在matlab中完成了这项工作,但在python中实现它有困难

    我尝试了以下操作:

    import numpy as np
    from PIL import Image
    from pylab import *
    
    ROWS = 144
    COLUMNS = 175
    raw_image = []
    
    lines = [line.strip().split(',') for line in open('CAMERA.txt')
    
    for i in lines:
        raw_image.append(i)
    
    mat_image = np.zeros((ROWS, COLUMNS), dtype = int)
    
    for i in rage(ROWS):
        for j in range(COLUMNS):
            mat_image.itemset(i, j, raw_image[(i-1)*COLUMNS + j])
    
    plt.gray()
    axes = app.image.add_subplot(111)
    self.im = Image.fromarray(mat_image)
    axes.imshow(self.im)
    app.imageCanvas.draw()
    

    我也尝试过:

    np.reshape(raw_image, ROWS, COLUMNS)
    

    然而,这两种方法都不起作用。有人有什么建议吗?

    提前感谢。

    2 回复  |  直到 10 年前
        1
  •  1
  •   wagnerpeer    10 年前

    如果我正确地解释了你想要做的事情,下面的程序可以做你想要的事情;-)

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    if __name__=='__main__':
    
        rows = 144
        columns = 175
    
        camera_image = np.loadtxt(r'path/to/filename')
        if(not camera_image.size == rows * columns):
            raise Exception('Size mismatch!')
    
        my_image = np.reshape(camera_image, (rows, columns)) / 255.0
    
        figure = plt.figure()
        axes = figure.add_subplot(1, 1, 1)
    
        axes.imshow(my_image)
    
        plt.show()
    

    亲切的问候

        2
  •  0
  •   Mark    10 年前

    这里有一个从文本整数到PIL图像的非常简单的方法,对我很有用:

    import numpy as np
    from PIL import Image
    
    ROWS = 50
    COLUMNS = 50
    
    # greyValues.txt is 2500 RGB values 0-255 one per line
    arr = np.genfromtxt('greyValues.txt', dtype=np.int8)
    
    arr.shape = (ROWS, COLUMNS)
    
    img = Image.fromarray(arr, 'L')
    img.show()
    img.save("textimage.jpg")