如何在无符号数据类型中将负值强制为0?

2024-10-02 02:38:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从另一个图像中减去一个图像(都是uint8dtype),但如果此操作导致负数,则应返回uint8dtype的最大值(即:255)

如何强制它返回0

注意:如果可能的话,我不想转换int8中的图像,然后np.clip转换图像

import numpy as np  

img1 = np.zeros(1, dtype = np.uint8)  
img2 = np.ones(1, dtype = np.uint8)  
img = img1 - img2  
  
print(img1)  
print(img2)  
print(img)  

Tags: 图像importnumpyimgclipasnpint8
1条回答
网友
1楼 · 发布于 2024-10-02 02:38:20

因为您使用的是uint8,所以所有数字都在[0,255]范围内。在这种情况下,负的1导致255-2In 254等等。如果强制转换为带符号的数据类型不是一个选项,则可以使用np.where根据条件进行减法,例如:

img1 = np.arange(4, dtype=np.uint8)
img2 = np.ones(4, dtype=np.uint8)

np.where(img1>img2, img1-img2, 0)
# array([0, 0, 1, 2], dtype=uint8)

否则会产生:

img1-img2
# array([255,   0,   1,   2], dtype=uint8)

相关问题 更多 >

    热门问题