Цвет пикселя красным на полутоновом изображении, если он превышает некоторый порог - PullRequest
0 голосов
/ 31 октября 2018

После вычисления пиксельной разности двух изображений в градациях серого, скажем, img1 и img2, мне нужно установить определенный порог, который является средним значением diff. Теперь, если значения пикселей в img1> threshold, я должен покрасить этот пиксель в красный цвет. Как я могу покрасить этот пиксель в красный цвет и оставить другие пиксели в оттенках серого? Я знаком с генерацией двоичной маски, назначая значение пикселя, превышающее пороговое значение, равным 1, а другие равным 0, но я хочу покрасить этот пиксель в красный цвет.

img1 = cv2.imread(path,0)
img2 = cv2.imread(path,0)

diff = cv2.absdiff(img1, img2)
threshold=int(np.mean(diff))

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете сделать что-то вроде этого, начиная с:

enter image description here enter image description here

import cv2
img1 = cv2.imread('Bean.jpg',0)
img2 = cv2.imread('saltnpepperBean.jpg',0)

diff = cv2.absdiff(img1, img2)
threshold=int(np.mean(diff))

# Make colour version of input image so we can put red pixels in it
resultRGB = cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR)

# Colorize all pixels above threshold with red 
resultRGB[diff>3*threshold] = 0,0,255

# Save to disk
cv2.imwrite('result.jpg',resultRGB)

enter image description here

...