Я хочу изменить цвета в изображении с Python из определенного цветового диапазона в другой цвет - PullRequest
0 голосов
/ 07 мая 2018

enter image description here

Я хочу изменить коричневые области на КРАСНЫЙ (или другой цвет). Просто я не знаю, как получить диапазоны для коричневого и поместить их в код Python. Я знаю, как изменить один цвет, но не диапазон цветов. Есть идеи? Спасибо

1 Ответ

0 голосов
/ 07 мая 2018

Это должно дать вам представление - оно довольно хорошо прокомментировано:

#!/usr/local/bin/python3
import cv2 as cv
import numpy as np

# Load the aerial image and convert to HSV colourspace
image = cv.imread("aerial.png")
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)

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

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

# Change image to red where we found brown
image[mask>0]=(0,0,255)

cv.imwrite("result.png",image)

enter image description here


Как я определил пределы для «коричневый» ? Я нашел коричневую область на изображении и обрезал ее, чтобы удалить все остальное. Затем я изменил его до 1x1, чтобы усреднить все оттенки коричневого в этой области, и преобразовал его в цветовое пространство HSV, распечатал его и взял значение Hue, равное 15, и пошло +/- 5, чтобы получить диапазон 10- 20. Увеличьте диапазон до 8-22, чтобы выбрать более широкий диапазон оттенков.

Цветовое пространство HSV / HSL описано в Википедии здесь .

...