如何检查RGB图像中的像素是否为绿色?

时间:2016-07-18 19:08:36

标签: python opencv image-processing colors rgb

我正在使用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值对应绿色,哪些不对应。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用InRange功能查找特定范围内的颜色,因为只有一个或几个像素值,您将无法从卫星上找到绿色。 InRange功能将帮助您找到一系列设置颜色(您应该设置绿色范围)并返回一个图像,其中绿色像素的坐标与原始图像相同。我已经用示例和代码回答了类似的静态HERE(虽然它不是python,你应该理解这些方法并在OpenCV项目中轻松实现它),你应该找到你需要的所有内容。