Sorting cv::Mat in OpenCv

Sorting cv::Mat in OpenCv

本文关键字:OpenCv in Mat Sorting cv      更新时间:2023-10-16

OpenCV中是否存在类似于Matlab中[srtd,srtdinds] = sort(dst,'ascend');的等效函数?我试过cv::sortIdx(source, dst, cv::SORT_ASCENDING);,但它不起作用。我的源Mat包含一列。

来自cv::sortIdx():的文档

它不是对元素本身进行重新排序,而是将已排序元素的索引存储在输出数组中。

这意味着,在调用cv::sortIdx()以复制Matlab的sort()函数的行为之后,您将需要调用cv::sort()来对元素本身进行排序:

cv::Mat source = cv::Mat::eye(3,3,CV_32F), dst;
cv::sortIdx(source, dst, CV_SORT_EVERY_ROW + CV_SORT_ASCENDING);
cv::sort(source, source, CV_SORT_EVERY_ROW + CV_SORT_ASCENDING);

现在dst包含排列的索引,而source包含排序的数据本身。