如何解决如何在无符号dtypes中将负值强制为0?
我想从另一张图像(均为uint8
dtype中减去一张图像,但是如果此操作导致负数,则它应返回uint8
dtype的最大值(即: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)
解决方法
由于您使用的是uint8
,所以所有数字都将在[0,255]
范围内。在这种情况下,负1
会导致255
,-2
会导致254
,依此类推。如果不强制转换为带符号的dtype,则可以使用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,1,2],dtype=uint8)
否则会产生:
img1-img2
# array([255,dtype=uint8)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。