Конвертировать .pgm файл в CSV-файл на Python, - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужно выяснить, как преобразовать файл .pgm в файл .csv на python. Я изучаю питон в течение двух с половиной недель, поэтому, если кто-нибудь поможет, пожалуйста, помните о моем недостатке знаний. Я использую Pycharm на Windows 10.

Вот мой код, с которым я застрял. Я пытаюсь открыть файл 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

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Ваш файл 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 и посмотрите, не поможет ли это вам в остальной части вашей проблемы.

0 голосов
/ 07 ноября 2018

Не изобретайте колесо, используйте Подушку , чтобы загрузить изображение, а затем преобразуйте его в массив numpy:

import numpy as np
from PIL import Image

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

Теперь напечатайте im.shape и пошли ...

...