这应该给你一个概念--它是相当好的评论。
#!/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)
How did I determine the limits for "brown"?我在图像中找到了一个棕色的区域,并把它裁剪出来,以去除其他的东西。然后我将其调整为1x1,以平均该区域的所有棕色色调,并将其转换为HSV色彩空间,我将其打印出来,并取Hue
的值为15,然后进行+/-5,得到一个10-20的范围。将这个范围增加到8-22,以选择更广泛的色调范围。
维基百科上对HSV/HSL色彩空间进行了描述here.
Keywords:图像处理、Python、OpenCV、inRange、颜色范围、素色。