我想用python将图像中的颜色从特定颜色范围更改为另一种颜色

Geo*_*nev 4 python opencv colors python-imaging-library

在此输入图像描述

我想将棕色区域更改为红色(或其他颜色).只是我不知道如何获取棕色的范围并将它们放在python代码中.我知道如何改变单一颜色,但不是一系列颜色.有任何想法吗?谢谢

Mar*_*ell 13

这应该给你一个想法 - 它评论很好:

#!/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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


我如何确定"棕色"的限制?我在图像中找到了一个棕色区域,并将其裁剪掉以删除其他所有内容.然后我将它调整为1x1以平均该区域中所有棕色的阴影并将其转换为HSV颜色空间,我打印出来并取其值为Hue15并且+/- 5得到10-20的范围.将范围增加到8-22以选择更广泛的色调.