OpenCV根据面积筛选连通域学习示例

 更新时间:2022年06月07日 09:14:14   作者:忘·月  
这篇文章主要为大家介绍了OpenCV根据面积筛选连通域学习示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

学习目标:

对二值图进行分析,设定最大最小面积区间

保留该面积区间内的区域

示例代码

//src为二值图,minArea、maxArea为面积阈值,dest为结果图像
void connectionAreaSelect(Mat src, int minArea, int maxArea, Mat &dest)
{
	Mat labels, stats, centroids, img_color;
	//连通域计算
	int nccomps = connectedComponentsWithStats(
		src, //二值图像
		labels,
		stats,
		centroids
	);

	//去除过小区域,初始化颜色表
	vector<Vec3b> colors(nccomps);
	colors[0] = Vec3b(0, 0, 0); // background pixels remain black.
	for (int i = 1; i < nccomps; i++)
	{
		colors[i] = Vec3b(rand() % 256, rand() % 256, rand() % 256);

		//面积阈值筛选
		int holeArea = stats.at<int>(i, CC_STAT_AREA);
		if ((holeArea < minArea) || (holeArea > maxArea))
		{
			colors[i] = Vec3b(0, 0, 0);
		}
	}
	//按照label值,对不同的连通域进行着色
	img_color = Mat::zeros(src.size(), CV_8UC3);
	for (int y = 0; y < img_color.rows; y++)
	{
		for (int x = 0; x < img_color.cols; x++)
		{
			int label = labels.at<int>(y, x);
			CV_Assert(0 <= label && label <= nccomps);
			img_color.at<Vec3b>(y, x) = colors[label];
		}
	}
	//统计降噪后的连通区域
	Mat grayImg;
	cvtColor(img_color, grayImg, COLOR_BGR2GRAY);
	threshold(grayImg, grayImg, 1, 255, THRESH_BINARY);
	dest = grayImg.clone();

	labels.release();
	stats.release();
	centroids.release();
	img_color.release();
	grayImg.release();
}

以上就是OpenCV根据面积筛选连通域学习示例的详细内容,更多关于OpenCV根据面积筛选连通域的资料请关注脚本之家其它相关文章!

相关文章

  • 详解如何优化和调整Python中Scrapy的性能

    详解如何优化和调整Python中Scrapy的性能

    在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何处理更复杂的抓取任务,如登录,处理Cookies和会话,以及避免爬虫被网站识别和封锁,需要的朋友可以参考下
    2023-09-09
  • python用pandas读写和追加csv文件

    python用pandas读写和追加csv文件

    大家好,本篇文章主要讲的是python用pandas读写和追加csv文件,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • PyQt5+PyQt5Designer的安装步骤

    PyQt5+PyQt5Designer的安装步骤

    本文主要介绍了PyQt5+PyQt5Designer的安装步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 简单讲解Python编程中namedtuple类的用法

    简单讲解Python编程中namedtuple类的用法

    namedtuple类位域Collections模块中,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护,下面就来简单讲解Python编程中namedtuple类的用法
    2016-06-06
  • Python如何识别 MySQL 中的冗余索引

    Python如何识别 MySQL 中的冗余索引

    冗余索引也是一个非常重要的巡检目,表中索引过多,会导致表空间占用较大,索引的数量与表的写入速度与索引数成线性关系(微秒级),如果发现有冗余索引,建议立即审核删除,这篇文章主要介绍了Python 识别 MySQL 中的冗余索引,需要的朋友可以参考下
    2022-10-10
  • python检测空间储存剩余大小和指定文件夹内存占用的实例

    python检测空间储存剩余大小和指定文件夹内存占用的实例

    今天小编就为大家分享一篇python检测空间储存剩余大小和指定文件夹内存占用的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python正则表达式匹配日期与时间的方法

    Python正则表达式匹配日期与时间的方法

    这篇文章主要介绍了Python正则表达式匹配日期与时间的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python实现网页链接提取的方法分享

    python实现网页链接提取的方法分享

    这篇文章主要介绍了python实现的网页链接提取的方法,需要的朋友可以参考下
    2014-02-02
  • Docker部署Python爬虫项目的方法步骤

    Docker部署Python爬虫项目的方法步骤

    这篇文章主要介绍了Docker部署Python爬虫项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python爬取爱奇艺电影信息代码实例

    Python爬取爱奇艺电影信息代码实例

    这篇文章主要介绍了Python爬取爱奇艺电影信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论