2011-06-08 10 views
5

tengo una matriz binaria y me gustaría obtener los índices de los elementos distintos de cero, preferiblemente como un vector de CV :: Puntos. Hay una función que cuenta elementos que no son cero, pero eso no es lo que necesito.Obtener índices no nulas de Mat OpenCV

En Matlab, la llamada equivalente sería simplemente encontrar().

pude buscar a través de toda la matriz y guardar los índices, pero que no es elegante!

+3

opencv rara vez es elegante. –

Respuesta

2

Si no le importa usar el módulo numpy, vea NumPy For Matlab Users. Existe la función nonzero que es equivalente a matlab find.

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

Es Python. Puede ser que debería eliminar la respuesta. Ok, usa python o downvote mi respuesta – Andrey

+0

Gracias, estoy familiarizado con Numpy (bastante elegante), pero ya he invertido en C++. ¡Yo renunciaría a su respuesta, pero no soy lo suficientemente respetable! – phil0stine

+0

esto probablemente debería ser la respuesta aceptada teniendo en cuenta que actualmente es la única forma "elegante" de hacerlo. – twerdster

Cuestiones relacionadas