Python OpenCV/NumPy:为什么 np.uint8([255]) + np.uint8([255]) 给出结果 254 而不是 255?

时间:2021-05-12 17:41:12

标签: python numpy opencv numpy-ndarray opencv-python

import numpy as np

a = np.uint8([255])
b = np.uint8([255])

print(a+b)

结果: array([254], dtype=uint8)

2 个答案:

答案 0 :(得分:3)

uint8 可以保存范围 0..255 .

例如你写 np.uint8([256]) -> array([0], dtype=uint8)

就你而言a+b=np.uint8([510])=np.uint8([510-256])=np.uint8([254])

答案 1 :(得分:1)

uint8 是一个使用 8 位表示的无符号整数。用 8 位表示的数字范围是 [0, 255]。

8 位二进制中的 255 是 1111 1111。

当您将 1111 1111 与 1111 1111 相加时,您会得到 1 1111 1110 (= 510)。但是由于您只有 8 位要表示(因为您使用的是 uint8),因此无法存储结果中最左边的 1,将结果呈现为 1111 1110,即 254。

相关问题