У меня есть файл csv со значениями интенсивности 480x640, представленными как числа с плавающей запятой. Это всего лишь один длинный столбец.
В python Я хотел импортировать эти данные и попытаться отобразить их как изображение. Вот лучшая версия, которую я придумал на данный момент:
import math
import pandas as pd
import numpy as np
from PIL import Image
##import matplotlib
from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt
#visual one
#df = pd.read_csv('93834016616704_DATA.csv', header=None) # read the training data file from working directory
#meter one93840538154878_DATA
df = pd.read_csv('235317464765230_DATA.csv', header=None) # read the training data file from working directory
i = 3 # set any valid index of an image
##label = df.values[i][0] # retrieve label from first colum in dataframe
#im_buf = df.values[i][1:] # create flat array of only the pixels of the given image
#axis_len = int(math.sqrt(im_buf.shape[0])) # calculate the dimensions of the square image
print("df size" + str(df.size.item()));
im_array = np.int8(np.reshape(df.values, (480, 640))) # create a 2D array from flat array
im_array = im_array.transpose()
img = Image.fromarray(im_array, 'L') # convert to a PIL.Image object ('L' is for grayscale)
#print(f'Label: {label}')
imshow(np.asarray(img))
plt.show()
В результате изображение повернуто на 90 градусов, а также 4 раза нарезано и скопировано. Я не уверен, что делаю не так.