【问题标题】:generate image using matrix使用矩阵生成图像
【发布时间】:2022-12-11 22:44:02
【问题描述】:
我正在尝试将矩阵转换为图像。该矩阵的 (i, j) 项是网格位置 (i,j) 处像素的 e 值,0 表示黑色,1 表示介于两者之间的白色和灰色(因此 0.1 比 0.8 更暗,值更大小于 1 仍然是白色,小于 0 是黑色)。所以如果矩阵的每个条目都是 1 或 2,我期望得到一个白色图像,如果矩阵的每个条目是 -1 或 0,我期望得到黑色图像。
我努力了
plt.imshow(np.zeros((10,10))+1, cmap='gray')。我期待一个白色的图像,但我却全黑了。我不知道如何处理 cmap 以获得所需的颜色。
太感谢了!
【问题讨论】:
标签:
python
matplotlib
imshow
【解决方案1】:
听起来您想使用灰度颜色图来可视化您的矩阵。在这种情况下,您可以使用 Matplotlib 中的灰色颜色图来执行此操作。这是一个例子:
import numpy as np
import matplotlib.pyplot as plt
# Create a random 10x10 matrix with values between 0 and 1
matrix = np.random.rand(10, 10)
# Use the gray colormap to visualize the matrix
plt.imshow(matrix, cmap='gray')
# Show the plot
plt.show()
这应该会产生一个图像,其中较亮的像素对应于矩阵中的较高值,而较暗的像素对应于较低的值。
如果要确保图像中最暗的像素为黑色,最亮的像素为白色,可以使用 vmin 和 vmax 参数分别指定矩阵中的最小值和最大值。例如:
# Use the gray colormap to visualize the matrix, with vmin=0 and vmax=1
plt.imshow(matrix, cmap='gray', vmin=0, vmax=1)
这将确保图像中最暗的像素对应于矩阵中的值 0,最亮的像素对应于矩阵中的值 1。