Прочитайте несколько изображений из каталога и превратите их в файлы .csv - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь взять папку, полную изображений, и превратить их в массивы, свести каждый массив в 1 строку и сохранить выходные данные как отдельные файлы .csv и как один коллективный файл .csv.

import numpy as np
import cv2

IMG_DIR = 'directory'
for img in os.listdir(IMG_DIR):
    img_array = cv2.imread(os.path.join(IMG_DIR,img), cv2.IMREAD_GRAYSCALE)
    img_array = np.array(img_array)
    img_array = (img_array.flatten())
    print(img_array)
    np.savetxt('output.csv', img_array)

У меня есть каталог, загружающий все нужные изображения, и PowerShell показывает, что все изображения были преобразованы в одномерные массивы, но в CSV-файле сохраняется только последнее изображение.Также есть ли способ сохранить массив 1D в виде строки вместо столбца?

1 Ответ

0 голосов
/ 05 марта 2019

Вы используете то же имя, что и выходной файл, и при записи вы стираете все предыдущие данные, которые содержались в этом файле.Один из способов сделать это - открыть файл ранее в режиме добавления:

import numpy as np
import cv2

IMG_DIR = 'directory'

for img in os.listdir(IMG_DIR):
        img_array = cv2.imread(os.path.join(IMG_DIR,img), cv2.IMREAD_GRAYSCALE)
        # unnecesary because imread already returns a numpy.array
        #img_array = np.array(img_array)
        img_array = (img_array.flatten())
        # add one dimension back to the array and 
        # transpose it to have the a row matrix instead of a column matrix
        img_array  = img_array.reshape(-1, 1).T
        print(img_array)
        # opening in binary and append mode
        with open('output.csv', 'ab') as f:
            # expliciting the delimiter as a comma
            np.savetxt(f, img_array, delimiter=",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...