Opencv将numpy.zeros绘制为灰度图像

lskq00tm  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(234)

我很难理解opencv如何解释numpy数组。

import cv2
import numpy as np

if __name__ == '__main__':
    size = (w, h, channels) = (100, 100, 1)
    img = np.zeros(size, np.int8)
    cv2.imshow('result', img), cv2.waitKey(0)
    cv2.destroyAllWindows()

灰度黑色100 x100图像,对吗?不,它显示的是灰色!为什么?

slhcrj9b

slhcrj9b1#

好的,关键是dtype,我选择了np.int8,当我使用np.uint8时,它是黑色的。
令人惊讶的是,当dtype=np.int8时,零被解释为127(或128)!
我期望零仍然是零,不管它是有符号的还是无符号的。

gojuced7

gojuced72#

对于BGR图像,

img = np.zeros([height, width, 3], dtype=np.uint8)
iqih9akk

iqih9akk3#

您的代码需要更改两个方面:
1.大小=(宽,高,通道)=(100,100,3)
由于(100,100,1)将创建灰度图像,彩色图像(BGR或RGB)需要3个通道,红、蓝和绿色各1个

  1. img = np.zeros(size,np.uint8)(int 8将无法捕获0-255之间的值)

相关问题