#python #arrays #image #matplotlib #imshow
#python #массивы #изображение #matplotlib #imshow
Вопрос:
Моя цель — отобразить 2D-массив в виде изображения на Python. Массив не содержит нулевых элементов, и поэтому я ожидал бы изображение, в котором imshow () автоматически устанавливает цветовую шкалу в соответствии со значениями массива. Однако, когда я запускаю код, изображение остается пустым.
Файл csv:https://ufile.io/urk5m
import numpy as np
import matplotlib.pyplot as plt
data_ = np.loadtxt(open("new_file.csv", "rb"), delimiter=",")
plt.imshow(data_)
Мой результат таков:https://imgur.com/jMNnF0h
Ответ №1:
Всегда помните, но на самом деле всегда, что images работает с 8-битными целыми числами. Вот почему существует 2 ^ 8 оттенков серого и почему наибольшее общее количество цветов CS равно (2 ^ 8) ^ 3 = 16,7 млн. Цвет. 3 потому что существует 3 цветовых канала — RGB, каждый из которых имеет 256 оттенков.
Все считают с ним, и в основном библиотеки обработки изображений.
Поэтому ВСЕГДА убедитесь, что вы передаете правильный тип данных матрицы в функции обработки изображений:
image_8bit = np.uint8(data_)
plt.imshow(image_8bit)
plt.show()
Комментарии:
1. добавлю, что я также обнаружил это с помощью ‘plt.imshow(data_, cmap=’jet’, vmin = 0, vmax = 100)’, который нормализует диапазон отображаемых данных. Отличный ответ, поддержанный.