在使用imshow显示时,为什么使用np.hstack零填充图像会使它变成白色?

时间:2019-05-06 08:07:50

标签: python numpy opencv matplotlib image-processing

我有一张图片patch,尺寸为:(200, 350 , 3)

补丁

enter image description here

我正在尝试使用以下方法水平堆叠黑色图像:

stacked_image = np.hstack((patch, np.zeros((200, 2450, 3))))

所以stacked_image的形状为:(200, 2800, 3)

但是当我用plt.imshow()cv2.imshow()显示图像补丁时,它会变白 enter image description here

我不明白为什么补丁会变白。我期望补丁图像和其余的列像素为黑色。我该如何实现?

此外,当我使用cv2.imwrite保存图像时,我得到了预期的输出:

cv2.imwrite(r'hstack.png', np.hstack((patch, np.zeros((200, 2450, 3)))))

enter image description here

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

我相信您的问题是dtype 更改

np.zeros((200, 2450, 3))

np.zeros((200, 2450, 3), dtype=np.uint8)

您还可以尝试查看pyplot.imshow的cmap参数