У меня есть пустой массив, и я использую постоянное значение из массива.Я хочу, чтобы значения стали отрицательными, если это необходимо (а не обтекание или от нуля до нуля).Затем мне нужно извлечь все значения массива, которые находятся около нуля, и создать новый двоичный массив / изображение.Таким образом, полученное изображение будет показывать белый цвет в местах, которые были близки к нулю.
Я пытался реализовать это, но это было хакерским, и я не уверен, правильно ли это.Можете ли вы помочь с тем, что я пытаюсь сделать выше?
# roi is a numpy array/image in Cielab colour space
swatch_colour = (255, 10, 30) # Cielab colour space
swatch_roi = np.full((roi.shape[0], roi.shape[1], 3), swatch_colour, dtype='int8')
int_roi = roi.astype('int8')
diff = np.subtract(int_roi, swatch_roi)
thresh = diff.copy()
# Get all pixels whose Cielab colour is close to zero
thresh[np.abs(thresh) < (12,6,12)] = 0
# the remaining pixels are greater than/less than the above threshold
thresh[np.abs(thresh) > (0,0,0)] = 255
thresh = thresh.astype('uint8')
# convert from 3 channels to 1 channel
thresh = cv2.cvtColor(thresh, cv2.COLOR_BGR2GRAY)
# Invert the image so that the pixels that were close to zero are white
thresh = cv2.bitwise_not(thresh)