23

23,第1张

本文主要是关于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        降序

从上面的选择中每组选择一个组合使用。


2. cv::sortIdx()

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;

显示结果:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/563175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存