我需要获取RGB颜色值范围内的一些像素
我使用inRange函数:
mask = cv2.inRange(image, lower, upper)
现在我得到了这个蒙版,我需要对过滤后的像素进行一些操作-即找到两个随机像素之间的距离
我该怎么做?
如果我致电print(image)
,则会得到以下数组:
[[[ 78 94 107]
[ 82 97 113]
[ 87 102 118]
...
[101 114 116]
[108 120 122]
[109 121 123]]
据我了解,这是一个数组,其中键是x和y像素位置,值是RGB代码。但是如果我打电话给print(mask.nonzero())
,我会看到
(array([126, 126, 126, ..., 168, 168, 168], dtype=int64),...)
我并没有真正理解此数组中的内容,在文档中我没有找到返回值的类型
答案 0 :(得分:2)
由于mask
是一个2d数组,所以numpy.nonzero(..)
方法将返回一个2元组,第一项是第一个非零坐标的索引数组,第二个是非零坐标的索引数组元组是第二个坐标的索引数组,该数组非零。
您可以np.transpose(..)
来获得一个 n×2 矩阵,其中每一行的像素的两个坐标都不为零,因此:
print(np.transpose(mask.nonzero()))