Изменение цветовой гаммы изображения на другую текстуру цвета - PullRequest
0 голосов
/ 17 января 2019

Я успешно изменил диапазон цветов в изображении на один другой цвет. Я хотел бы сделать его более реалистичным, изменив цвета в соответствии с распределением образца или, по крайней мере, узкой полосой случайных оттенков.

Какая-то коричневая трава

enter image description here

изменен на очень искусственную зеленую траву

enter image description here

Мой код:

import cv2 as cv
import os
import numpy as np
import random

# Load the image and convert to HSV colourspace
image = cv.imread('brown_grass.jpg') 
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)

# Define lower and uppper limits of what we call "brown"
brown_lo=np.array([18,0,0])
brown_hi=np.array([28,255,255])

# Mask image to only select browns
mask=cv.inRange(hsv,brown_lo,brown_hi)

# Change image to green where we found brown
image[mask>0]=(74,183,125) # how do change it to a nice realistic texture swatch?
cv.imwrite('result.jpg',image)

(Благодаря Я хочу изменить цвета на изображении с python с определенного цветового диапазона на другой цвет для первой части решения)

1 Ответ

0 голосов
/ 18 января 2019

Спасибо @MarkSetchell за идею;способ замаскировать замаскированную область более естественным способом состоит в том, чтобы использовать тот факт, что коричневый и зеленый цвета смежны с цветовой моделью HSV, и добавить дельту между ними, плюс увеличение насыщенности и значения.

hsv[mask>0]=hsv[mask>0]+(25,30,10) #  add an HSV vector
image2=cv.cvtColor(hsv,cv.COLOR_HSV2BGR) # convert image back into RGB color space
cv.imwrite('result.jpg', image2)

Здесь преувеличиваю эффект:

enter image description here

...