Вы можете получить желаемый эффект, применяя прозрачное наложение.Я примерно разобрался с цветом (небесно-голубой) методом проб и ошибок.Его можно изменить на любой цвет.
В OpenCV вы можете использовать cv2..addWeighted()
для этой цели
Код:
import numpy as np
import cv2
image = 'C:/Users/Desktop/city.jpg'
im = cv2.imread(path, 1)
blue = np.zeros_like(im)
blue[:] = (255, 200, 0) #<--- Change here
cv2.imshow('blue.jpg', blue)
val = 0.75
fin = cv2.addWeighted(blue, val, im, 1 - val, 0)
cv2.imshow('Transparent_image', fin)
Как уже упоминалось @vasia, установка красного и зеленого пикселей на 0
не дает желаемого эффекта.Вот что я получаю в результате:
ОБНОВЛЕНИЕ
@ Комментарий MarkSetchell заставил меня задуматься иэто результат этого:
Так что я сделал?
Я объединил три канала:
- Массив значений 255 в синем канале
- Оттенки серого исходного изображения в зеленом канале
- Массив значений 0 в красном канале
Спасибо Марк !!