答案 0 :(得分:10)
这应该会给你一个想法 - 评论很好:
#!/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)
我如何确定“brown”的限制?我在图像中找到了一个棕色区域,并将其裁剪掉以删除其他所有内容。然后我将它调整为1x1以平均该区域中所有褐色的阴影并将其转换为HSV颜色空间,我打印出来并取Hue
的值为15,然后+/- 5给出范围10-20。将范围增加到8-22以选择更广泛的色调。
在维基百科here上描述了HSV / HSL颜色空间。