OpenCV`sortingIdx`返回意外结果

时间:2013-10-14 12:45:06

标签: 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函数正确返回已排序的序列。

1 个答案:

答案 0 :(得分:1)

排序的序列是

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

与您的结果相当吻合。

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