web-dev-qa-db-ja.com

pythonの画像の色を特定の色の範囲から別の色に変更したい

enter image description here

茶色の部分を赤(または別の色)に変更したい。茶色の範囲を取得してpythonコードに入れる方法がわかりません。単一の色を変更する方法は知っていますが、色の範囲はわかりません。アイデアはありますか?ありがとうございます。

5
George Tanev

これはあなたにアイデアを与えるはずです-それはかなりよくコメントされています:

#!/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色空間については、ウィキペディアで説明されています ここ

キーワード:画像処理、Python、OpenCV、inRange、色の範囲、プライム。

18
Mark Setchell