我正在使用opencv和numpy来处理一些卫星图像。
我需要区分什么是"土地",什么是"绿色"(作物和植被)。
我的问题是:如何确定RGB格式中哪些值接近绿色
到目前为止,我正在做的是:
img = cv2.imread('image1.jpg',1)
mat = np.asarray(img)
for elemento in mat:
for pixel in elemento:
if pixel[1] > 200: # If the level of green is higher than 200, I change it to black
pixel[0] = 0
pixel[1] = 0
pixel[2] = 0
else: # If the level of G is lower than 200 I change it to white.
pixel[0] = 255
pixel[1] = 255
pixel[2] = 255
这段代码有效,但并不是很有用。我需要一种更精确的方式来决定哪些RGB值对应绿色,哪些不对应。
我怎样才能做到这一点?
您可以使用InRange函数来查找特定范围内的颜色,因为您无法从只有一个或几个像素值的卫星中找到绿色。InRange函数将帮助您找到一个设置颜色的范围(您应该设置绿色的范围),并返回一个具有原始图像中那些绿色像素坐标的图像。我在这里用例子和代码回答了类似的问题(虽然它不是python,但你应该理解这些方法,并在你的OpenCV项目中轻松实现它),你应该在那里找到你需要的一切。