Значение не может быть отрицательным - PullRequest
0 голосов
/ 09 июля 2020

У меня есть 2 пикселя серого изображения (преобразованное с помощью open-cv), и я хочу их вычесть:

frame = cv2.cvtColor(frame_color, cv2.COLOR_BGR2GRAY)
for x in range(2064):
   for y in range(1200):
       intensity1 = frame[y, x]
       intensity2 = frame[y + 1, x]
       diff_intensity = intensity1 - intensity2

diff_intensity может быть только в диапазоне 0-255. Итак, если intensity1 = 12 и intensity2 = 16, я получил 252. Я хочу получить -4. Я попытался преобразовать разницу в int16: diff_intensity = numpy.int16(intensity1 - intensity2) , но безуспешно. Кто-нибудь знает, как я могу это сделать?

1 Ответ

0 голосов
/ 09 июля 2020

Поскольку intensity1 равно uint8, это целое число без знака. Это означает, что он может содержать только положительное значение.

Вам нужно преобразовать его в int8, например:

diff_intensity = numpy.int8(intensity1 - intensity2)

int8 - целое число со знаком, поэтому оно может содержать отрицательные значения.

(Вы должны импортировать numpy, чтобы это работало.)

...