通过meanColor过滤blob接近指定的颜色SimpleCV

时间:2017-02-27 09:49:19

标签: python python-2.7 computer-vision simplecv

SimpleCV具有基于某些标准过滤blob的漂亮功能。

blobs.filter(numpytrutharray)

由blob生成numpytrutharray。[property] [operator] [value]。

我需要过滤掉接近某种颜色的blob,SimpleCV使用元组来存储RGB颜色值。关于如何做到的任何想法?

1 个答案:

答案 0 :(得分:0)

如果你想做类似

的事情
blobs.filter((rmin, gmin, bmin) < blobs.color() < (rmax, gmax, bmax))
然后你可以立即停止你在做什么。这不是Numpy真值数组生成的工作方式,如果你想使用那种方法过滤blob,你需要这样做:

red, green, blue = [[],[],[]]
color_array = blobs.color()

# Split the color array into separate lists (channels)
for i in color_array:
    red.append(i[0])
    green.append(i[1])
    blue.append(i[2])

# Convert lists to arrays
red_a = np.array(red)
green_a = np.array(green)
blue_a = np.array(blue)

# Generate truth arrays per channel
red_t = rmin < red_a < rmax
green_t = gmin < green_a < gmax
blue_t = bmin < blue_a < bmax

# Combine truth arrays (* in boolean algebra is the & operator, and that's what numpy uses)
rgb_t = red_t * green_t * blue_t

# Run the filter with our freshly baked truth array
blobs.filter(rgb_t)

不可否认,这是一种生成数组的漫长方法,但它可能比手动过滤blob的颜色blob更快。