python - 为什么在使用 imshow 显示时使用 np.hstack 对图像进行零填充会使图像变白?

标签 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() 显示它时,图像 block 变白了 enter image description here

我不明白为什么补丁会变白。我期待补丁图像和其余列像素为黑色。我怎样才能做到这一点?

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

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

enter image description here

谁能解释为什么会这样?

最佳答案

我相信你的问题是 dtype 改变

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

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

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

关于python - 为什么在使用 imshow 显示时使用 np.hstack 对图像进行零填充会使图像变白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56001176/

相关文章:

python - 分页中的网址错误。 Django

java - 使用不同的解释器执行shell脚本

python - 根据条件从另一个数据框中添加列

python - 将 Numpy 数组保存为图像(说明)

python - 如何有效地将形状为(w,h,3)的numpy图像转换为在第三轴上具有r,g,b,x,y的(w,h,5)?

python - 使用 import inline 是否会产生负面影响?

python - 如何选择commonlist中没有的名字?

python - 2 个 numpy 数组之间的排序和索引

c++ - 错误 : 'create' is not a member of 'cv::Tracker'

python - 基于示例的修补-如何计算轮廓和等值线的法线