在 python 中将 .pgm 文件转换为 csv 文件,

Convert .pgm file to csv file in python,

我需要在 python 中了解如何将 .pgm 文件转换为 .csv 文件。我已经学习了 python 2 1/2 周,所以如果有人能提供帮助,请记住我缺乏知识。我在 Windows 10.

上使用 Pycharm

这是我坚持使用的代码。我试图打开一个 pgm 文件并将其保存到一个空数组中打印出来以检查它是否具有正确的值,然后将其保存为 csv 文件以用于神经网络。这是文件的内容。

 P2
 # Created by GIMP version 2.10.6 PNM plug-in
 20 20
 2552552552552552552550255........255 or 0 black and white hand drawn


import numpy


with open('pgmDataSet/40157883_11_2.pgm', 'r') as input_pgm:
    list_test = [input_pgm]
    list_test = numpy.empty([20, 20], dtype=int, order='C')
    for row in list_test:
        for col in row:
            #What am i missing???????????
            print(row)
numpy.savetxt('csvDataSet/40157883_11_2.csv', list_test, delimiter=',', 
fmt='%s')

with open('csvDataSet/40157883_11_2.csv') as converted:
    list_converted = [converted]
    for line1 in list_converted:
        print(line1.read())

        # np.savetxt('csvDataSet/40157883_11_2.csv', input_pgm, 
delimiter=',', fmt='%s')
    # break;

    # list_test[list_test >= 128] = 1
    # list_test[list_test < 128] = 0

不要重新发明轮子,使用Pillow加载图像,然后将其转换为numpy数组:

import numpy as np
from PIL import Image

im = np.array(Image.open('pgmDataSet/40157883_11_2.pgm'))

现在打印 im.shape 然后开始...

我觉得你的 PGM 文件不正确。您显示为:

P2
# Created by GIMP version 2.10.6 PNM plug-in
20 20
2552552552552552552550255........255 or 0 black and white hand drawn

但这不是有效的 PGM/P2 文件。除了指定宽度和高度(我这里假设是20,20),你还需要给出最大灰度值(看起来是255)。

不仅如此,根据http://netpbm.sourceforge.net/doc/pgm.html,每个像素值必须前后有空格。空格不是可选的。

因此,您的 PGM 文件应如下所示:

P2
# Created by ...
20 20 255
255 255 255 255 255 255 255 0 255 ........ 255

在您解决此问题(格式错误的 PGM 文件)之前,我怀疑会有很多库可以打开和读取您的 .pgm 文件。

所以请解决您的 .pgm 问题,看看这是否对您解决其余问题没有帮助。