带有统计信息的API:
int cv::connectedComponentsWithStats(InputArray   image,        // 输入二值图像OutputArray  labels,       // 输出的标记图像,背景index=0OutputArray  stats,        // 统计信息,包括每个组件的位置、宽、高与面积OutputArray  centroids,    // 每个组件的中心位置坐标cx, cyint          connectivity, // 连通域,默认是8连通int          ltype,        // 输出的labels类型,默认是CV_32Sint          ccltype       // 连通组件算法
)其中stats包括以下类型数据信息: 0    组件的左上角点像素点坐标的X位置1    组件的左上角点像素点坐标的Y位置2    组件外接矩形的宽度 3    组件外接矩形的高度4    当前连通组件的面积(像素单位)
        private void creat_rect(){Mat source = new Mat(@file_openImg[0], ImreadModes.Grayscale);    //读入模式,灰度图Mat labels = new Mat();      //像素点信息Mat xywh = new Mat();           //minx,miny,width,heigthMat c_xy = new Mat();           //中心点坐标 x,y//int num_labels = Cv2.ConnectedComponents(source, labels, PixelConnectivity.Connectivity4);int num_labels = Cv2.ConnectedComponentsWithStats(source, labels, xywh, c_xy);    //返回连通区域数量+1(其中1是背景图尺寸)for (int i = 0; i < num_labels; i++){box_site[i, 0] = xywh.At<int>(i, 0);box_site[i, 1] = xywh.At<int>(i, 1);box_site[i, 2] = xywh.At<int>(i, 2);box_site[i, 3] = xywh.At<int>(i, 3);if (box_site[i, 0] == 0) continue;        //box_site[0,...] 为背景图大小。Cv2.Rectangle(source, new OpenCvSharp.Point(box_site[i, 0], box_site[i, 1]), new OpenCvSharp.Point(box_site[i, 0] + box_site[i, 2], box_site[i, 1] + box_site[i, 3]), Scalar.White, 1);     //box_site中存放框的数据(全局变量)}Cv2.ImShow("biaoji", source);Cv2.WaitKey(0);source.Dispose();labels.Dispose();xywh.Dispose();c_xy.Dispose();}

将 box_site 中的坐标值画出来,结果如上图所示。显示差异是因为 opencv 和 win 的大小差异。

不带统计信息的API:
int cv::connectedComponents(InputArray    image,             // 输入二值图像OutputArray   labels,            // 输出的标记图像,背景index=0int           connectivity = 8,  // 连通域,默认是8连通int           ltype = CV_32S     // 输出的labels类型,默认是CV_32S
) 
        private void button1_Click(object sender, EventArgs e){Mat source = new Mat(@file_openImg[0], ImreadModes.Grayscale);    //读入模式,灰度图Mat labels = new Mat();Mat xywh = new Mat();Mat c_xy = new Mat();int num_labels = Cv2.ConnectedComponents(source, labels, PixelConnectivity.Connectivity4);Cv2.ImWrite(@file_openImg[0], source);OpenCvSharp.Point[][] contours;HierarchyIndex[] hierarchly;Cv2.FindContours(source, out contours, out hierarchly, RetrievalModes.Tree, ContourApproximationModes.ApproxSimple, new OpenCvSharp.Point(0, 0));//将结果画出并返回结果Mat dst_Image = Mat.Zeros(source.Size(), source.Type());Random rnd = new Random();for (int i = 0; i < contours.Length; i++){Scalar color = new Scalar(255, 255, 255);//白色//Cv2.DrawContours(dst_Image, contours, i, color, 1, LineTypes.Link8, hierarchly);}//查找指定Point2f pt = new Point2f(1, 40);var ret = Cv2.PointPolygonTest(contours[0], pt, false);RotatedRect rect = Cv2.MinAreaRect(contours[0]);Point2f[] P = rect.Points();for (int j = 0; j <= 3; j++){Cv2.Line(dst_Image, (OpenCvSharp.Point)P[j], (OpenCvSharp.Point)P[(j + 1) % 4], new Scalar(255, 0, 0), 1);}Cv2.ImShow("dst_Image:", dst_Image);Cv2.WaitKey(0);}

结果如上图所示,贴合白色区域的最小矩形。显示差异是因为opencv和win的大小差异。

C# OpenCvSharp 连通区域最小衔接矩形+最小标注信息(minx,miny,Width,Height)相关推荐

  1. 最小外接矩形(RotatedRect返回角度angle、width、height问题)

    RotatedRect该类表示平面上的旋转矩形,有三个属性: 矩形中心点(质心) 边长(长和宽) 旋转角度 旋转角度angle的范围为[-90,0),当矩形水平或竖直时均返回-90,请看下图: 来源: ...

  2. Halcon画矩形框(正矩形和最小外接矩形)

    利用halcon,画出矩形框(两种,根据需要选择).可用于在瑕疵检测中,给瑕疵框住外矩形框. 1.正矩形框 正矩形框,指的是没有发生倾斜,竖直的矩形框. 该矩形框,不仅能够完全覆盖region区域,而 ...

  3. halcon18算子:最小包围矩形smallest_rectangle2()

    halcon的最小包围矩形smallest_rectangle2()算子: 输入: region 输出: row:最小包围矩形的中心点的行坐标 col:最小包围矩形的中心的列坐标 Phi:最小包围矩形 ...

  4. opencv 最大连通域_opencv 查找连通区域 最大面积实例

    今天在弄一个查找连通的最大面积的问题. 要把图像弄成黑底,白字,这样才可以正确找到. 然后调用下边的方法: RETR_CCOMP:提取所有轮廓,并将轮廓组织成双层结构(two-level hierar ...

  5. cv2.connectedComponentsWithStats 计算不规则连通区域

    cv2.connectedComponentsWithStats 计算不规则连通区域 num, labels, stats, centroids = cv2.connectedComponentsWi ...

  6. opencv 最大连通域_opencv 查找连通区域 最大面积

    今天在弄一个查找连通的最大面积的问题. 要把图像弄成黑底,白字,这样才可以正确找到. 然后调用下边的方法: RETR_CCOMP:提取所有轮廓,并将轮廓组织成双层结构(two-level hierar ...

  7. Java+opencv3.2.0之删除最小连通区域

    吐槽一下,在网上查了半天opencv3关于删除最小连通区域的方法,结果还是没找到,就自己写了一个,效果还可以,就发出来和大家分享一下. 思路: 1.遍历所有像素点 2.每遍历到一个黑点就去判断是否为连 ...

  8. python如何做四象图_Python使用四个坐标点来剪切图像目标区域的最小外接矩形,python,利用,对,图片,进行,裁剪...

    在图像裁剪操作中,opencv和pillow两个库都具有相应的函数,但是这两个库中的函数仅仅能对与图片平行的矩形进行裁剪操作,如果想要对目标的最小外接矩形进行裁剪该如何操作呢?如下所示: 具体处理该问 ...

  9. 遍历图像 找最小外接矩形 matlab,2018a版本MatLab利用regionprops函数获取图片中物体轮廓最小外接矩形...

    2018a版本MatLab利用regionprops函数获取图片中物体最小外接矩形 本次内容,用于介绍利用matlab中的regionprops函数来获取图像区域中的物体的最小外接矩形信息(位置(x, ...

  10. 连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet

    1. 文本检测难点 文本内包含文本,艺术字体,任意方向 ,曲线文字 ,多语言,其他环境因素等是文本检测中的难点 2. 分割 问题1: 语义分割模型是对pixel进行分类,所以理论上讲,可以检测不规则的 ...

最新文章

  1. 如何改变Redis用不好的误区
  2. Zabbix邮件报警设置方法
  3. 30分钟带你熟练性能优化的那点儿事儿(案例说明)
  4. Applications模块解析(一)
  5. JavaWeb-综合案例(用户信息)-学习笔记04【删除选中功能】
  6. POJ2115-C Looooops【扩欧,同余】
  7. 2017年UI、Web、微服务顶级框架都有啥?不看就落伍了1
  8. 超 6 万的微软工程师是如何进行代码审查的?| CSDN 博文精选
  9. 网络编程基础知识之线程安全
  10. 《工业设计史》 第三章:18世纪的设计与商业
  11. Maven镜像地址大全,Maven镜像地址配置示例
  12. 微信小程序大赛介绍文档
  13. 如何查看当前IP地址
  14. SDN学习笔记(一)
  15. SpringCloud - LCN分布式事务框架
  16. 项目管理:PMP和IPMP哪个更值得考?两个证书的区别在于哪里?
  17. 【论文速递】BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and G
  18. Django的下载安装
  19. Xamarin指南针
  20. 中国增生性糖尿病性视网膜病的治疗方法市场趋势报告、技术动态创新及市场预测

热门文章

  1. 基于C++和OpenCV的中心线提取算法
  2. Springboot定时任务配置及遇到的问题
  3. EventEmitter练习之--匿名聊天室
  4. PHP 出现 The requested URL was not found on this server 怎么办?
  5. gds文件 导出_GaussDB 200使用GDS服务导入导出数据
  6. 个人重装系统前备份___1000款最杰出的软件清单:
  7. 003_SSS_ Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
  8. 计算机程序手工编织,丝绸编程秒杀计算机 《锦绣纪》致敬最强大脑
  9. 烟搭桥,酒开路?这届年轻人可能宁愿自断后路
  10. 存储卡格式化后数据如何恢复呢?