我有一个像这样的图像数组Indice
:
array([[158, 0, 252, ..., 185, 186, 187],
[254, 253, 252, ..., 188, 188, 189],
[247, 249, 252, ..., 188, 187, 186],
...,
[176, 172, 168, ..., 204, 205, 205],
[178, 175, 172, ..., 206, 205, 206],
[180, 177, 174, ..., 206, 207, 207]], dtype=uint8)
我希望将Indice
转换为二值化图像(0到1之间的值),并且保留在0(0.1或0.2)附近。我怎么能在Python中做到这一点?
答案 0 :(得分:1)
您可以使用np.where
将数据转换为0到1之间的范围,然后再除以255
threshold = 0.2
new_indice = np.where(Indice/255>=threshold, 1, 0)
答案 1 :(得分:1)
如果布尔二进制数组适合您,您可以简单地使用numpy的逐元素比较:
new_indice = (Indice/255 > threshold)
事实上,对于随机测试数组,这似乎比np.where
解决方案略快。如果你需要一个整数二进制数组,你只需在括号前添加1*
,但速度优势似乎已经消失。
答案 2 :(得分:0)
执行此类任务的简便方法是使用list comprehensions。
在你的情况下:
array([[1 if x>threshold else 0 for x in line] for line in Indice])
阈值将设置为您想要的值。