这个问题今天困扰了我好一阵子,鉴于我想在保存之前反复查看屏幕上的情况,写到磁盘上再读回来的解决方案不是一个好办法。
下面的代码是为了用最小的代码量来说明这个问题。
我正常导入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的结果是这样的。
而cv2.imwrite的结果是这样的。
对于那些可能看不清因为他们不让我的图片出现的人来说:imshow图片测试像素都是黑色区域上的白点imwrite图片测试像素是正确的灰度值。
完全让我感到困惑......请注意,即使我不调整大小,只使用numpy数组,其结果也是一样的[而且我是用jupyter笔记本写的,以防与此有关,尽管它不应该]。
有什么想法吗?