我想了解np.zeros
和np.ones
之间的区别。在我的波纹管代码中,两个都创建了黑色图像。但是np.zeros
和np.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()
答案 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位像素的白色图像。