你需要做 HSV 过滤
- 将图像颜色从 BGR 更改为 HSV(色相饱和度值)。
- 过滤与绿色匹配的特定范围的饱和度和色调
阈值。
请参阅此页面以获取执行前 2 项的代码
https://pythonprogramming.net/color-filter-python-opencv-tutorial/
- 做一些形态学操作,比如腐蚀、膨胀、开孔、
关闭以删除不代表树木的小块绿色
并将看起来破碎的树木连接在一起。
参考https://docs.opencv.org/master/d9/d61/tutorial_py_morphological_ops.html
- 检测轮廓然后绘制矩形
import cv2
import numpy as np
img = cv2.imread('8FGo1.jpg',1)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_red = np.array([45,100,50])
upper_red = np.array([75,255,255])
mask = cv2.inRange(hsv, lower_red, upper_red)
kernel = np.ones((5,5),np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x,y,w,h = cv2.boundingRect(contour)
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow('img',img)
#cv2.imshow('mask',mask)
输出