opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例

这篇具有很好参考价值的文章主要介绍了opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例,opencv,机器人,c++,计算机视觉,单片机

void CrelaxMyFriendDlg::OnBnClickedOk()
{
	hdc = this->GetDC()->GetSafeHdc();
	// TODO: 在此添加控件通知处理程序代码
	string imAddr = "c:/Users/actorsun/Pictures/";
	string imAddr1 = imAddr+"rice.png";
	Mat relax1, positive;
	relax1 = imread(imAddr1);
	Mat relax;
	cvtColor(relax1, relax, COLOR_BGR2GRAY);
	threshold(relax, positive, 50, 255, THRESH_BINARY);
	imshow(positive);
	RNG rng(101);
	Mat a, b;
	int cout = connectedComponentsWithStats(positive, positive,a,b,8,CV_16U);
	//其中b是中心点的坐标,本例中是一个7行,2列的东西,每一行代表一个中心点坐标值
    imshow("1", positive);
	waitKey();
	vector<Vec3b> colors;
	for (int i = 0; i < cout; i++)
	{
		Vec3b vec(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256));
		colors.push_back(vec);
	}
	Mat result(positive.rows,positive.cols,relax1.type());
	for (int row = 0; row < relax1.rows; row++)
	{
		for (int col = 0; col < relax1.cols; col++)
		{
			int temp = positive.at<uint16_t>(row,col);
			if (temp == 0)
				continue;
			result.at<Vec3b>(row, col) = colors[temp];
		}
	}
	imshow("标记后的图", result);
	waitKey();
	return;
}
/** @overload
@param image the 8-bit single-channel image to be labeled
@param labels destination labeled image
@param stats statistics output for each label, including the background label.
Statistics are accessed via stats(label, COLUMN) where COLUMN is one of
#ConnectedComponentsTypes, selecting the statistic. The data type is CV_32S.
@param centroids centroid output for each label, including the background label. Centroids are
accessed via centroids(label, 0) for x and centroids(label, 1) for y. The data type CV_64F.
@param connectivity 8 or 4 for 8-way or 4-way connectivity respectively
@param ltype output image label type. Currently CV_32S and CV_16U are supported.
*/
CV_EXPORTS_W int connectedComponentsWithStats(InputArray image, OutputArray labels,
                                              OutputArray stats, OutputArray centroids,
                                              int connectivity = 8, int ltype = CV_32S);
/** @brief Random Number Generator

Random number generator. It encapsulates the state (currently, a 64-bit
integer) and has methods to return scalar random values and to fill
arrays with random values. Currently it supports uniform and Gaussian
(normal) distributions. The generator uses Multiply-With-Carry
algorithm, introduced by G. Marsaglia (
<http://en.wikipedia.org/wiki/Multiply-with-carry> ).
Gaussian-distribution random numbers are generated using the Ziggurat
algorithm ( <http://en.wikipedia.org/wiki/Ziggurat_algorithm> ),
introduced by G. Marsaglia and W. W. Tsang.
*/
class CV_EXPORTS RNG
{
。。。
}

上面这个代码是MFC程序里面的一个函数,不能够直接运行,但是如果学过MFC相信没有问题完全能够看得懂。

opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例,opencv,机器人,c++,计算机视觉,单片机

public static final int
        CC_STAT_LEFT = 0,
        CC_STAT_TOP = 1,
        CC_STAT_WIDTH = 2,
        CC_STAT_HEIGHT = 3,
        CC_STAT_AREA = 4,
        CC_STAT_MAX = 5;

opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例,opencv,机器人,c++,计算机视觉,单片机

上例当中,count=7(也许可能是count,我写成了cout,也就不改了).说明检测到7个连通域。

opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例,opencv,机器人,c++,计算机视觉,单片机文章来源地址https://www.toymoban.com/news/detail-737666.html

到了这里,关于opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)

    例如,设定阈值为127,然后:  将图像内所有像素值大于 127 的像素点的值设为 255。  将图像内所有像素值小于或等于 127 的像素点的值设为 0。 cv2.threshold() 和 cv2.adaptiveThreshold() 是 OpenCV 中用于实现阈值处理的两个函数,它们之间有以下区别: 1.1.1. cv2.threshold(): 这个函数

    2024年02月05日
    浏览(60)
  • 【OpenCV】Qt + OpenCV 开发配置 + 入门知识(代码示例)

    前言  一、OpenCV简介 二、OpenCV + QT 开发环境搭建 🚀资源下载 三、OpenCV图像原理 🌭位图模式  🌭灰度模式 🌭RGB模式 四、OpenCV基础图像操作 🍔读图像 🍔显示图片  🍔保存图片 🍔Mat类 🍔像素 五、案例实现  🌈毛玻璃效果 🌈高斯模糊 🌈XY轴模糊 🌈中值滤波 🌈灰度处

    2024年02月03日
    浏览(229)
  • OPENCV 闭运算实验示例代码morphologyEx()函数

     闭运算就是先膨胀,后腐蚀,膨胀或者腐蚀的对象都是针对非零像素,也就是图片当中不是全黑的那部分像素-----或者说灰度值等于0的那些个像素。膨胀导致非零像素膨胀,黑像素就会缩小, 腐蚀导致非零像素减少,黑色像素就会增多。也许有人会搞不清这一点 闭运算是先

    2024年02月07日
    浏览(55)
  • 使用OpenCV和Python实现缺陷检测的示例代码

    你需要使用cv2.imshow()函数来显示结果。具体来说,你可以使用以下代码来显示结果: 在上面的代码中,\\\'Result’是窗口的名称,img是要显示的图像。cv2.waitKey(0)函数会等待用户按下任意键后关闭窗口。cv2.destroyAllWindows()函数会关闭所有打开的窗口。

    2024年02月12日
    浏览(68)
  • 图像分割简单介绍,并给出opencv图像分割的示例代码

    图像分割是计算机视觉中的一项重要任务,其目标是将图像中的对象与背景进行分离,或将图像分割成不同的区域。本教程将介绍图像分割的基本概念和方法,以及如何在实践中应用它们。 什么是图像分割? 图像分割方法 实践:使用Python和OpenCV进行图像分割 总结及拓展阅读

    2024年02月09日
    浏览(47)
  • python的opencv操作记录(十)——图像融合

    最近碰到一个项目上的难题,是要从电动显微镜对焦的多张图像进行融合。因为,显微镜物镜的景深范围较小,可能在同一视野中有多个需要拍摄的物体位于不同的景深范围内,所以想通过图像的融合,将不同景深上的多张图像进行融合,从而把这些物体都在同一张图像中对

    2024年02月09日
    浏览(40)
  • OpenCV——图像连通域分析

       cv::connectedComponents 函数将二值图像分割成多个连通区域,每个连通区域被赋予一个唯一的标签。函数的返回值为标签数目。该函数的原型如下: image :输入图像。 labels :输出的连通区域标签图像。 connectivity :为连通性。 ltype :输出图像的数据类型。 cv::connectedCompon

    2024年02月11日
    浏览(49)
  • OpenCV16-图像连通域分析

    连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域。连通域分析是指在图像中寻找彼此互相独立的连通域并将其标记出来。 4邻域与8邻域的概念:点 P 0 ( x , y ) P_0(x,y) P 0 ​ ( x , y ) 的4邻域为其上下左右4个像素点,其8邻域为上下左右再加上对角线方向的4个点。

    2024年02月06日
    浏览(43)
  • OpenCV(二十八):连通域分割

    目录 1.介绍连通域分割 2.像素领域介绍 3.两遍法分割连通域 4.连通域分割函数 1.介绍连通域分割        连通域分割是一种图像处理技术,用于将图像中的相邻像素组成的区域划分为不同的连通域。这些像素具有相似的特性,如相近的灰度值或颜色。连通域分割可以用于物体

    2024年02月09日
    浏览(47)
  • opencv 十六 python下各种连通域处理方法(按面积阈值筛选连通域、按面积排序筛选连通域、连通域分割等方法)

    本博文基于python-opencv实现了按照面积阈值筛选连通域、按照面积排序筛选topK连通域、 连通域细化(连通域骨架提取)、连通域分割(基于分水岭算法使连通域在细小处断开)、按照面积排序赛选topK轮廓等常见的连通域处理代码。并将代码封装为shapeUtils类,在自己的python代

    2024年02月04日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包