zoukankan      html  css  js  c++  java
  • 使用OpenCV查找二值图中最大连通区域

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

    使用OpenCV查找二值图中最大连通区域

    标签: OpenCVfindCoutours
     分类:
     

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. cv::Mat bwImg;  
    2. vector<vector<cv::Point>> contours ;    
    3.   
    4. // 二值化图像  
    5. cv::threshold(srcImg, bwImg, 0.0, 255.0, CV_THRESH_BINARY | CV_THRESH_OTSU);  
    6.   
    7. cv::imshow("binary image", bwImg);  
    8. cv::waitKey();  
    9.   
    10. // 查找轮廓,对应连通域  
    11. cv::findContours(bwImg,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);  
    12.   
    13. // 寻找最大连通域  
    14. double maxArea = 0;  
    15. vector<cv::Point> maxContour;  
    16. for(size_t i = 0; i < contours.size(); i++)  
    17. {  
    18.     double area = cv::contourArea(contours[i]);  
    19.     if (area > maxArea)  
    20.     {  
    21.         maxArea = area;  
    22.         maxContour = contours[i];  
    23.     }  
    24. }  
    25.   
    26. // 将轮廓转为矩形框  
    27. cv::Rect maxRect = cv::boundingRect(maxContour);  
    28.   
    29. // 显示连通域  
    30. cv::Mat result1, result2;  
    31.   
    32. bwImg.copyTo(result1);  
    33. bwImg.copyTo(result2);  
    34.   
    35. for (size_t i = 0; i < contours.size(); i++)  
    36. {  
    37.     cv::Rect r = cv::boundingRect(contours[i]);  
    38.     cv::rectangle(result1, r, cv::Scalar(255));  
    39. }  
    40. cv::imshow("all regions", result1) ;  
    41. cv::waitKey();  
    42.   
    43. cv::rectangle(result2, maxRect, cv::Scalar(255));  
    44. cv::imshow("largest region", result2) ;  
    45. cv::waitKey();  
    
    
    
    
  • 相关阅读:
    李超线段树 [Heoi2013]Segment
    [置顶] 九月半集训总结
    [置顶] 我想学学
    图论+前缀和 任(duty)
    模拟 飞(fly)
    入坑 可持久化线段树——主席树
    一次爆炸的联考
    HASH+平衡树 [JSOI2008]火星人prefix
    乱搞+STL平衡树 序列
    数学+图论 建造游乐场
  • 原文地址:https://www.cnblogs.com/donaldlee2008/p/5229991.html
Copyright © 2011-2022 走看看