本文主要是关于OpenCV中的排序的实现。
目录
1. cv::sotr()
2. cv::sortIdx()
1. cv::sotr()
cv::sort()函数用于二维矩阵,只支持单通道源矩阵。 函数声明如下:
void cv::sort(
cv::InputArray src,
cv::OutputArray dst,
int flags
);
cv::sotr()分别对每行每列进行排序。 结果是一个新的矩阵,该结果矩阵与源矩阵具有想用的尺寸和类型。 排序可以是升序或降序,可以对行或列排序,由参数flags指定。
参数flags可取的值有:
- cv::SORT_EVERY_ROW 对每一行排序
- cv::SORT_EVERY_COLUMN 对每一列排序
- cv::SORT_ASCENDING 升序
- cv::SORT_DESCENDING 降序
从上面的选择中每组选择一个组合使用。
cv::sortIdx()函数与cv::sort()类似,仅用于单通道二维矩阵,分别对每行或每列进行排序。 函数声明:
void cv::sortIdx(
cv::InputArray src,
cv::OutputArray dst,
int flags
);
与cv::sort()不同的是,cv::sortIdx() *** 作的结果是与源矩阵大小相同但包含排序元素整数索引的新矩阵dst。 详细可以看下面的例子:
cv::Mat A = (cv::Mat_(2, 4) << 45,4,2,3,69,7,10,25);
cv::Mat dst;
cv::sort(A, dst, cv::SORT_ASCENDING | cv::SORT_EVERY_ROW); // 按升序每行排序
cv::Mat dst_idx;
cv::sortIdx(A, dst_idx, cv::SORT_ASCENDING | cv::SORT_EVERY_ROW);
std::cout << "A = \n " << A << std::endl;
std::cout << "dst = \n " << dst << std::endl;
std::cout << "dst_idx = \n " << dst_idx << std::endl;
显示结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)