import cv2
import numpy as np
#load the image
image = cv2.imread("meadow.jpg")
#define the lower and upper bounds of colors to threshold for in the HSV color space.
hsv_lower = (35//2, 0, 120)
hsv_upper = (45//2, 255, 255)
#convert the image to HSV color space
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
#find the areas of the image corresponding to the colors set above
mask = cv2.inRange(hsv_image, hsv_lower, hsv_upper)
#set the detected areas to white and other areas to black
new_image = np.where(mask, np.uint8(0), np.uint8(255))
#erode to fill in the gaps between the black pixels.
new_image = cv2.erode(new_image, kernel=np.ones((7,7)))
#find connected components (the white areas)
labels, stats = cv2.connectedComponentsWithStats(new_image)[1:3]
#create a mask for the area excluding the largest component
not_my_yard = labels != np.argmax(stats[:,cv2.CC_STAT_AREA])
#set the color of the area excluding the largest component to black
image[not_my_yard] = 0
#save the new image
cv2.imwrite("my_yard.jpg", image)
请参阅下面我的代码中的注释,了解如何在图像中选择您的院子
如果您的院子和非您的院子之间的边界颜色发生变化,这将不是一个可靠的解决方案。通过在GIMP中打开图像,并使用GIMP的颜色选择器工具选择右侧的棕色边框对象,我找到了一个合适的HSV范围。神奇的是,这种颜色也适用于灰色方块。通过使用颜色范围,或者甚至为棕色块和灰色块创建单独的遮罩,您可能会获得更好的效果
相关问题 更多 >
编程相关推荐