c++ - OpenCV `sortIdx` 返回意外结果

标签 c++ sorting opencv

我尝试使用 OpenCV sortIdx(在 C++/Objective C 中)但得到了意想不到的结果:

Mat test = (Mat_<double>(1, 6) << 15.342105,5.000000,27.000000,1.1,2.1,3.1);
std::cout << test << "\n";
Mat testIdx;
sortIdx(test, testIdx, CV_SORT_ASCENDING | CV_SORT_EVERY_ROW);
std::cout << testIdx << "\n";

这给出了输出:

[15.342105, 5, 27, 1.1, 2.1, 3.1]
[3, 4, 5, 1, 0, 2]

虽然我希望

[15.342105, 5, 27, 1.1, 2.1, 3.1]
[4, 3, 5, 0, 1, 2]

我不知道为什么,正常的 sort 函数会正确返回排序后的序列。

最佳答案

排序后的序列是

{test[3], test[4], test[5], test[1], test[0], test[2]}

这与您的结果相当吻合。

您期望结果是从输入到输出的映射(“输入中的这个项目会去哪里?”),但它实际上是从输出到输入的映射(“输出中的这个项目会从哪里来来自?”)。

关于c++ - OpenCV `sortIdx` 返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360558/

相关文章:

c++ - 在定义 ClassName 之前采用参数 ClassName * 的 typedef 函数指针?

javascript - 将json对象插入javascript中的有序数组

r - 对条形图列进行排序 ggplot

opencv - channel 数-Matlab vs Opencv

C++ 单线程工作,在新线程上它调用 "abort()"

c++ - SFML 和代码:: block 0xc00000be

c++ - 使用 Makefile 的旧 C++ 项目..迁移到 Eclipse IDE?

c++ - 访问 OpenCV Mat CV_16UC1 的元素

c++ - 如果我想将一个无符号整数四舍五入为最接近的更小或相等的偶数,我可以除以 2 然后乘以 2 吗?

python - 根据对角线项对矩阵进行排序