无法让CV2.IMSHOW()与CV2.IMWRITE()显示相同的内容。

问题描述 投票:0回答:1

这个问题今天困扰了我好一阵子,鉴于我想在保存之前反复查看屏幕上的情况,写到磁盘上再读回来的解决方案不是一个好办法。

下面的代码是为了用最小的代码量来说明这个问题。

我正常导入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图片测试像素都是黑色区域上的白点imwrite图片测试像素是正确的灰度值。

完全让我感到困惑......请注意,即使我不调整大小,只使用numpy数组,其结果也是一样的[而且我是用jupyter笔记本写的,以防与此有关,尽管它不应该]。

有什么想法吗?

python numpy cv2 imshow
1个回答
1
投票

你需要通过 dtype 初始化数据时

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

产出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.