http://blog.csdn.net/shaoxiaohu1/article/details/40272875

2014-10-19 22:31 2802人阅读 评论(0) 收藏 举报
 分类:
图像与OpenCV(15) 

版权声明:本文为shaoxiaohu原创文章,欢迎转载,请注明出处,谢谢。

上一篇博文中介绍了matlab查找最大连通区域的方法,OpenCV函数中也有类似的函数与之对应,findCoutours。下面代码为使用示例:

  1. cv::Mat bwImg;
  2. vector<vector<cv::Point>> contours ;
  3. // 二值化图像
  4. cv::threshold(srcImg, bwImg, 0.0, 255.0, CV_THRESH_BINARY | CV_THRESH_OTSU);
  5. cv::imshow("binary image", bwImg);
  6. cv::waitKey();
  7. // 查找轮廓,对应连通域
  8. cv::findContours(bwImg,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
  9. // 寻找最大连通域
  10. double maxArea = 0;
  11. vector<cv::Point> maxContour;
  12. for(size_t i = 0; i < contours.size(); i++)
  13. {
  14. double area = cv::contourArea(contours[i]);
  15. if (area > maxArea)
  16. {
  17. maxArea = area;
  18. maxContour = contours[i];
  19. }
  20. }
  21. // 将轮廓转为矩形框
  22. cv::Rect maxRect = cv::boundingRect(maxContour);
  23. // 显示连通域
  24. cv::Mat result1, result2;
  25. bwImg.copyTo(result1);
  26. bwImg.copyTo(result2);
  27. for (size_t i = 0; i < contours.size(); i++)
  28. {
  29. cv::Rect r = cv::boundingRect(contours[i]);
  30. cv::rectangle(result1, r, cv::Scalar(255));
  31. }
  32. cv::imshow("all regions", result1) ;
  33. cv::waitKey();
  34. cv::rectangle(result2, maxRect, cv::Scalar(255));
  35. cv::imshow("largest region", result2) ;
  36. cv::waitKey();

使用OpenCV查找二值图中最大连通区域的更多相关文章

  1. opencv删除二值图中较小的噪点色块

    CvSeq* contour = NULL; double minarea = 100.0; double tmparea = 0.0; CFileDialog dlg(true); if (dlg. ...

  2. opencv统计二值图黑白像素个数

    #include "iostream" #include "queue" #include "Windows.h" #include < ...

  3. opencv 删除二值化图像中面积较小的连通域

    对于上图的二值化图像,要去除左下角和右上角的噪点,方法:使用opencv去掉黑色面积较小的连通域. 代码 CvSeq* contour = NULL; double minarea = 100.0; ...

  4. 超越OpenCV速度的MorphologyEx函数实现(特别是对于二值图,速度是CV的4倍左右)。

    最近研究了一下opencv的 MorphologyEx这个函数的替代功能, 他主要的特点是支持任意形状的腐蚀膨胀,对于灰度图,速度基本和CV的一致,但是 CV没有针对二值图做特殊处理,因此,这个函数对 ...

  5. S0.4 二值图与阈值化

    目录 二值图的定义 二值图的应用 阈值化 二值化/阈值化方法 1,无脑简单判断 opencv3函数threshold()实现 2,Otsu算法(大律法或最大类间方差法) OpenCV3 纯代码实现大津 ...

  6. 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪

    前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...

  7. zw·准专利·高保真二值图细部切分算法

    zw·准专利·高保真二值图细部切分算法     高保真二值图细部切分算法,是中国字体协会项目的衍生作品.     说准专利算法,是因为对于图像算法的标准不了解,虽然报过专利,但不是这方面的,需要咨询专 ...

  8. c语言实现灰度图转换为二值图

    将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 /* 2015年6月2日11:16:22 灰度图转换为二值图 blog:http ...

  9. C语言实现将彩色BMP位图转化为二值图

    CTF做了图片的隐写题,还没有形成系统的认识,先来总结一下BMP图的组成,并通过将彩色图转为二值图的例子加深下理解. 只写了位图二进制文件的格式和代码实现,至于诸如RGB色彩和调色板是什么的一些概念就 ...

随机推荐

  1. oAuth 使得第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权

    OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可 ...

  2. 寒假学干货之------LinearLayout.layout.weight

    所有原始代码由这个大神写的--http://www.cnblogs.com/zhangs1986/archive/2013/01/17/2864237.html layout/activity_mai ...

  3. Socket 传送文件

    1.传送文本文件 1.1服务端 package com; import java.io.BufferedWriter; import java.io.DataInputStream; import j ...

  4. 昨天面试遇到的一道C语言题

    楼主之前是做C/C++开发的,今年转到java,hadoop方向了,所以很多C/C++的细节都有些模糊了,碰巧这次面试题中,就出了一道C指针的问题. 问题不算难,但楼主一时之间竟也想不起来答案了... ...

  5. IIS下访问网络驱动器(网络位置)

    System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.ex ...

  6. Python统计栏目页面数量

    主要为了装个B,统计栏目页面数量时候用的,多线程基本照抄 http://www.cnblogs.com/fnng/p/3670789.html 关于对SEO有什么用处...我觉得...仅对本人有用,P ...

  7. control

    group:多个脚本之间按照独立设置模式跑,各个脚本可以单独设置虚拟用户.运行时间等 scenario:多个脚本之间按照相同的模式跑,将总的虚拟用户数按照一定的比例分配给各个脚本 ---------- ...

  8. maven项目构建

    Maven是apache的一个开源项目.是一个用来把源代码构建成可发布的构件的工具. Maven的功能非常强大,可以认为是一个项目管理工具,不仅仅是一个构建工具. Maven本身的核心很小,但是可以在 ...

  9. (转)URI与URL的区别

    这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...

  10. 【Python@Thread】Semaphore&糖果机

    信号量适用与多线程竞争有限资源的情况. from atexit import register from time import ctime, sleep from threading import ...