我正在使用opencv/python进行运动检测项目。我已经达到了创建图像位图/数组的地步,其中已检测到的运动由数组中的1表示,0表示没有运动(通过在短延迟后从另一个视频提要中减去一张图片)。我希望通过使用Numpy的(或opencv的)kmeans算法来确定我的移动目标(可能有超过1个)。然而,这些算法需要使用x,y坐标数组的输入。将2d图像位图数组转换为xy坐标数组的最快和最有效的方法是什么?(例如,我们在这里讨论的是图像处理,所以不希望使用缓慢的Python代码)。
Numpy的nonzero
将这样做:
下面是一个来自文档的例子:
>>> x = np.eye(3)
>>> x
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> np.nonzero(x)
(array([0, 1, 2]), array([0, 1, 2]))
即输出数组中非零元素的下标。