gpt4 book ai didi

python - 获得2个像素之间的差异并处理溢出错误

转载 作者:行者123 更新时间:2023-12-02 17:26:34 27 4
gpt4 key购买 nike

我正在尝试查找同一图像的2个像素pq之间的差异。这是我的工作:

import cv2
import numpy as np
img = cv2.imread("coin.png",0)

diff = np.absolute(img[0][0] - img[1][45])

结果是:
RuntimeWarning: overflow encountered in ubyte_scalars

为什么会出现此警告?图像的 dtypeuint8。如何找到两个像素之间的差异?

另外,以下两个方程式的结果为何不同?
np.absolute(img[0][0] - img[1][45])
# results in 166


np.absolute(img[1][45] - img[0][0])
# results in 90

这是怎么回事这不是正常的减法吗?

最佳答案

正如您已经注意到的,图像被加载为1字节无符号整数uint8

因此可能会发生溢出-这是两个方程式打印绝对值不同的相同原因。

您只需将其转换为int即可解决此问题。

import numpy as np

a = np.asarray([121], dtype=np.uint8)
b = np.asarray([93], dtype=np.uint8)

print(abs(a - b)) # prints [28]
print(abs(b - a)) # prints [228]

a = a.astype(int)
b = b.astype(int)

print(abs(a - b)) # prints [28]
print(abs(b - a)) # prints [28]

关于python - 获得2个像素之间的差异并处理溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com