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根据面积筛选连通域的资料请关注脚本之家其它相关文章!

相关文章

  • pycharm使用docker容器开发的详细教程

    pycharm使用docker容器开发的详细教程

    这篇文章主要介绍了pycharm使用docker容器开发的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Python目录和文件处理总结详解

    Python目录和文件处理总结详解

    这篇文章主要介绍了Python目录和文件处理总结详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 针对Pandas的总结以及数据读取_pd.read_csv()的使用详解

    针对Pandas的总结以及数据读取_pd.read_csv()的使用详解

    这篇文章主要针对Pandas总结以及数据读取_pd.read_csv()的使用详解做出了实例,讲解非常全面,值得收藏,需要的朋友可以参考下
    2023-03-03
  • python dataframe astype 字段类型转换方法

    python dataframe astype 字段类型转换方法

    下面小编就为大家分享一篇python dataframe astype 字段类型转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python opencv鼠标画矩形框之cv2.rectangle()函数

    python opencv鼠标画矩形框之cv2.rectangle()函数

    鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝不可,下面这篇文章主要给大家介绍了关于python opencv鼠标画矩形框cv2.rectangle()函数的相关资料,需要的朋友可以参考下
    2021-10-10
  • Python迭代器与生成器基本用法分析

    Python迭代器与生成器基本用法分析

    这篇文章主要介绍了Python迭代器与生成器基本用法,结合实例形式分析了Python迭代器与生成器的基本功能、定义及使用方法,需要的朋友可以参考下
    2018-07-07
  • python中SQLAlchemy使用前端页面实现插入数据

    python中SQLAlchemy使用前端页面实现插入数据

    这篇文章主要介绍了SQLAlchemy使用前端页面实现插入数据,文章内容介绍详细巨头有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • python使用正则来处理各种匹配问题

    python使用正则来处理各种匹配问题

    这篇文章主要介绍了python使用正则来处理各种匹配问题,本文通过实例代码给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python数字图像处理之图像的批量处理

    python数字图像处理之图像的批量处理

    这篇文章主要为大家介绍了python数字图像处理之图像的批量处理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 对Python正则匹配IP、Url、Mail的方法详解

    对Python正则匹配IP、Url、Mail的方法详解

    今天小编就为大家分享一篇对Python正则匹配IP、Url、Mail的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论