无法使CV2.IMSHOW()显示与CV2.IMWRITE()相同

时间:2020-05-01 22:24:08

标签: python numpy cv2 imshow

今天这个问题困扰了我一段时间,写一个磁盘然后读回它的解决方案并不是一个好方法,因为我想在保存之前迭代地查看屏幕上的情况。

下面的代码是用最少的代码来说明问题

我正常导入numpy和CV2,没有问题 然后以这种方式(黑色背景)为彩色图像创建一个空的numpy数组

Xsize = Ysize = 100
img_np = np.zeros([Xsize,Ysize,3])

以下几行用于插图着色,请选择BGR中的灰色像素

img_np[1][1] = [1, 1, 1]
img_np[1][3] = [10, 10, 10]
img_np[1][5] = [20, 20, 20]
img_np[1][7] = [30, 30, 30]
img_np[1][9] = [40, 40, 40]
img_np[1][11] = [100, 100, 100]
img_np[1][13] = [200, 200, 200]
img_np[1][15] = [240, 240, 240]

无论我是否调整大小,都会发生此问题。

img_cv = cv2.resize(img_np,(1000,1000), interpolation=cv2.INTER_NEAREST)
cv2.imshow('name',img_cv)
cv2.imwrite('crawltest.png', img_cv)

cv2.imshow如下所示:

enter image description here

cv2.imwrite如下所示:

enter image description here

对于那些可能看不到的原因,它们不会让我的图像出现: imshow图像测试像素在黑场上全部为白色 文字图像测试像素是正确的灰度值

完全让我困惑... 请注意,即使我不调整大小,仅使用numpy数组,其结果也相同 [而且我正在使用jupyter笔记本书写,以防与它有任何关系,尽管不应该]

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

初始化数据时,您需要传递dtype

img_np = np.zeros([Xsize,Ysize,3], dtype=np.uint8)

输出:

enter image description here