首页 > 解决方案 > 为什么 np.ones 创建黑色图像?

问题描述

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()

标签: pythonnumpyopencv

解决方案


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

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

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


推荐阅读