Разница в добавлении двух изображений в numpy и opencv - PullRequest
0 голосов
/ 11 марта 2012

когда я добавляю два изображения в opencv, сумма ограничивается 255. (Оба изображения имеют формат uint8)

т.е. 175 + 100 - это 255 в opencv.

, но если мы добавим егоиспользуя функцию numpy.add, результат не ограничен.

т.е. 175 + 100 - это число numpy 19.

Вопрос:

1) Почему это так?

2) Есть ли способ для np.add вести себя как cv2.add?т.е. сумма лимита до 255?

Заранее спасибо.

1 Ответ

3 голосов
/ 11 марта 2012

NumPy использует арифметику по модулю при переполнении, а не при отсечении.Это поведение сложения uint8 целых чисел в C. Итак, 175 + 100% 256 = 19, что является результатом, который вы получаете.

Чтобы получить такое поведение отсечения, вам нужно будет поработать:

Вот несколько идей:

1) Используйте более высокую точность:

im1 = im.astype('u2')
im2 = im.astype('u2')
tmp = im1 + im2
result = tmp.clip(0,255).astype('u1')

2) Убедитесь, что результат> = оба входных значения:

tmp = im1 + im2
mask = (tmp < im1) | (tmp < im2)
tmp[mask] = 255
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...