Python-Почему imshow() выдает пустое изображение для ненулевого массива?

#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)’, который нормализует диапазон отображаемых данных. Отличный ответ, поддержанный.