【发布时间】:2021-07-04 15:50:01
【问题描述】:
这个问题可能以前有人问过,所以我很高兴有人指出答案,但我找不到。
我有一个 True 和 False 的二维 numpy 数组。现在我需要将其转换为黑白图像(一个 3D numpy 数组),也就是说,我需要 [0,0,0] 代替每个 False 和 [1,1,1] 代替每个True。最好的方法是什么?例如,
Input:
[[False, True],
[True, False]]
Output:
[[[0, 0, 0], [1, 1, 1]],
[[1, 1, 1], [0, 0, 0]]]
(您可能知道,3D 图像是形状为 (height, width, 3) 的数组,其中 3 是深度维度,即通道数。)
如果有人能告诉我如何将其转换回来,即如果我有一个纯黑白图像(纯 [0,0,0] 和 [0,0,1] 像素),那么如何我得到一个具有相同高宽尺寸的二维矩阵,但用True 代替白色像素([1,1,1])和False 代替黑色像素([0,0,0])。
【问题讨论】:
-
a = a.astype(np.uint8)对于 3D,您可以使用np.expand_dims(arr, axis=2)或np.stack([list of 2D arrays], axis=2),对于True-False,您可以使用np.where(arr==1) -
@Bilal。这些都不是很好的选择
标签: python arrays numpy image-processing cv2