在 OpenCV 向量中搜索值

Search value in OpenCV vector

我在文档中找不到任何实现,它将显示我如何检索向量(一维矩阵)中具有匹配值的值的索引。 最接近的例子是:

Mat b;
Mat a = b == 5;

所以这应该给我一个布尔矩阵。然后我可以用它来提取等于 5 的值的索引。有没有更高效的方法?它应该将向量中的所有值并行发送到 GPU,然后 return 唯一(或第一个)等于 5 的值的索引。 它不应该是 "algorithm" 框架中的任何东西,例如:

std::find(...);

只对并行 GPU 解决方案感兴趣。

可以通过减少变换轻松完成。

首先,您将匹配的向量元素转换为它的索引,将不匹配的元素转换为一个大数字,比如向量大小。

然后在缩减阶段找到最小值,即数组中第一个匹配元素的索引。

这是一个复杂度为 O(log(n)) 的算法,可以由 GPU 高效地完成。

您可以通过推力或编写自己的内核来实现它。

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