为什么np.ones创建黑色图像?

时间:2019-02-22 12:52:50

标签: python numpy opencv

我想了解np.zerosnp.ones之间的区别。在我的波纹管代码中,两个都创建了黑色图像。但是np.zerosnp.ones的用途是什么。我什么时候应该使用它们。目的是什么。我知道np.ones用1填充矩阵,但是目的是什么。我想创建一个white image

img = np.ones((512,512,3), np.uint8)
cv2.imshow('IMG', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

img = np.zeros((512,512,3), np.uint8)
cv2.imshow('IMG', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3 个答案:

答案 0 :(得分:5)

将数组初始化为float数据类型。只有0表示黑色,而1表示白色:

img = np.ones((512,512,3), np.float)

说明: 当imshow接收到一个整数数组时,它将假定0为最小值,而255为最大值,代表灰度图像中的黑白。但是,如果接收到一个float数组,则会将这些值设置为0.0和1.0,因为它假定输入是缩放的。

答案 1 :(得分:3)

np.zeros“返回给定形状和类型的新数组,并用零填充。”

np.ones“返回给定形状和类型的新数组,并填充其中的一个。”

np.zeros(10)
Out: array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.ones(10)
Out:array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

答案 2 :(得分:3)

您需要按像素中的位数进行缩放。例如,

img = 255*np.ones((512, 512, 3), uint8)

将产生8位像素的白色图像。