2011-06-08 53 views
5

我有一个二元矩阵,想要得到非零元素的索引,最好是作为cv :: Points的向量。有一个函数可以计算非零元素,但这不是我所需要的。从Mat OpenCV获取非零索引

在Matlab中,等价的调用将是简单的找到()。

我可以搜索整个矩阵并保存索引,但那不是优雅!

+3

opencv很少有优雅。 – 2011-06-08 02:15:55

回答

2

如果您不介意使用numpy模块,请参阅NumPy For Matlab Users。有nonzero函数,这对matlab find是等价的。

>>> m = cv.CreateMat(2,2,cv.CV_16SC1) 
>>> a = numpy.asarray(m) 
>>> a.nonzero() 
(array([1, 1]), array([0, 1])) 
+0

这是Python。可能是我应该删除答案。好吧,使用Python或downvote我的回答 – Andrey 2011-06-08 07:51:55

+0

谢谢,我熟悉numpy(相当优雅),但我已经投资于C++。我会upvote你的答案,但我没有足够的声誉! – phil0stine 2011-06-08 14:24:06

+0

考虑到它目前唯一的“优雅”方式,这应该是可以接受的答案。 – twerdster 2012-03-19 00:06:59