RuntimeWarning: overflow encountered in ubyte_scalars # This is added back by InteractiveShellApp.

该问题是很多初学者在jupyter运行像素点计算时会出现的问题。


原因是,我们熟知在opencv的RGB空间,它的图像是三通道的,如果把图像视为x,y坐标,每个点的实际像素表示应该是由每个通道的该点的像素计算出来的。而这每个通道的像素值的范围都是在[0~255]这里注意是不能出现负数或者更大的数的,而且一旦出现负数,比如得到-2这时候opencv内就会将该点转化为253,因此在涉及像素运算时,有如下处理方法。

三目运算符

python的三目运算符在遍历像素点时可以:

a=np.array([1,2,13])
b=np.array([4,5,1])
c=a-b
t=np.array([10,10,10])
print(c)
print((c<t).all())


## 这行代码可以防止出现下满溢的情况、
c=[a[i]-b[i] if a[i]>b[i]  else b[i]-a[i] for i in range(3)]
## 这行代码可以防止出现上满溢的情况。
# c=[a[i]+b[i] if a[i]+b[i]<=255 else 255 for i in range(3)]
print(c)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45804132/article/details/116201914
今日推荐