23_OpenCV实现矩阵的排序功能

导读:本篇文章讲解 23_OpenCV实现矩阵的排序功能,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

本文主要是关于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_<int>(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;

显示结果:

23_OpenCV实现矩阵的排序功能

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46169.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!