2016-06-13 13 views
0

Я не могу найти в документах любой объект реализации, который покажет, как я могу получить индексы значений в векторной матрице (1d), которые имеют соответствующие значения. Ближайший пример:Значение поиска в OpenCV vector

Mat b; 
Mat a = b == 5; 

Так это должно дать мне матрицу булевы. И затем я могу использовать его для извлечения индексов значений, равных 5. Есть ли более эффективный способ? Он должен посылать все значения в векторе на GPU параллельно, а затем возвращать индекс единственного (или первого) значения, равного 5. И это не должно быть ничего из «алгоритма», например:

std::find(...); 

Интересует только параллельные решения для графического процессора.

ответ

0

Это может быть легко сделано путем преобразования преобразования.

Сначала вы преобразуете согласованный векторный элемент в его индекс и непревзойденные элементы на большое число, скажем, в векторный размер.

Затем на этапе восстановления вы найдете минимум, который является индексом первого совпадающего элемента в массиве.

Это алгоритм O (log (n)) и может быть эффективно выполнен графическим процессором.

Вы можете реализовать его либо путем нажатия, либо написания собственного ядра.

https://thrust.github.io/doc/group__transformed__reductions.html