//根据轮廓的面积大小进行选择
    vector<VP>  selectShapeArea(Mat src,Mat& draw,vector<VP> contours,int minvalue,int maxvalue){
        vector<VP> result_contours;
        draw = Mat::zeros(src.rows,src.cols,CV_8UC3);
        for (int i=0;i<contours.size();i++){ 
            double countour_area = contourArea(contours[i]);
            if (countour_area >minvalue && countour_area<maxvalue)
                result_contours.push_back(contours[i]);
        }
        for (int i=0;i<result_contours.size();i++){
            int iRandB = rng.uniform(0,255);
            int iRandG = rng.uniform(0,255);
            int iRandR = rng.uniform(0,255);
            Scalar  color  = Scalar(iRandB,iRandG,iRandR);
            drawContours(draw,result_contours,i,color,-1);
            char cbuf[100];sprintf_s(cbuf,"%d",i+1);
            //寻找最小覆盖圆,求出圆心。使用反色打印轮廓序号
            float radius;
            cv::Point2f center;
            cv::minEnclosingCircle(result_contours[i],center,radius);
            putText(draw,cbuf,center, FONT_HERSHEY_PLAIN ,5,Scalar(255-iRandB,255-iRandG,255-iRandR),5);
        }
        return result_contours;
    }
    vector<VP>  selectShapeArea(vector<VP> contours,int minvalue,int maxvalue)
    {
        vector<VP> result_contours;
        for (int i=0;i<contours.size();i++){ 
            double countour_area = contourArea(contours[i]);
            if (countour_area >minvalue && countour_area<maxvalue)
                result_contours.push_back(contours[i]);
        }
        return result_contours;

}

在Halcon中,运用非常广泛的SelectShape的Opencv实现,能够根据轮廓的大小,直接挑选出所需要的部分。我在这个基础上进行了强化,能够把每个轮廓的序号标注出来。并且依然提供draw打印。
 

最新文章

  1. java web重定向与转发
  2. 谈谈怎么实现Oracle数据库分区表
  3. 校省选赛第一场D题TwoDecks题解
  4. 【翻译】在Ext JS 5种使用ViewControllers
  5. Mysql自增主键ID重新排序方法详解
  6. PHP读取Excel里的文件
  7. zookeeper C API
  8. HDU 5556 最大独立集
  9. C# 调用.exe文件
  10. 将整数m的各位数字保存到数组A中
  11. 建立live555海思编码推流服务
  12. Java并发程序设计(四)JDK并发包之同步控制
  13. iOS Document Interaction(预览和打开文档) 编程指南
  14. Javascript 随机数函数 学习之二:产生服从正态分布随机数
  15. GrowingIO接入SDK简介
  16. 编程王道,唯&ldquo;慢&rdquo;不破
  17. cobller安装操作系统
  18. java中对象和对象的引用
  19. Idea 02.暴力递归与动态规划(1)
  20. (转)JAVA-反射机制的使用

热门文章

  1. vpn分类[转]
  2. demo工程的清单文件及activity中api代码简单示例
  3. java final方法的作用
  4. POJ 2697 A Board Game(Trie判重+BFS)
  5. (三)CMS Collector
  6. [LeetCode]题解(python):120 Triangle
  7. FlipView 索引为0 WP8.1
  8. ++i 与 i++ 区别
  9. iOS ARC中CTCallCenter没用,无法监听电话的解决方案
  10. 字节流和字符流(PrintStream类和PrintWiter类)