//根据轮廓的面积大小进行选择
    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打印。
来自为知笔记(Wiz)

【20160924】GOCVHelper 图像处理部分(2)相关推荐

  1. 【20160924】GOCVHelper综述

    GOCVHelper(GreenOpen Computer Version Helper )是我在这几年编写图像处理程序的过程中积累下来的函数库.主要是对Opencv的适当扩展和在实现Mfc程序时候的 ...

  2. 【20160924】GOCVHelper MFC增强算法(1)

        //递归读取目录下全部文件(flag为r的时候递归)     void getFiles(string path, vector<string>& files,string ...

  3. 【20160924】GOCVHelper MFC增强算法(2)

    //创建或续写目录下的csv文件,填写"文件位置-分类"对     int writeCsv(const string& filename,const Vector< ...

  4. 我学习图像处理的小结

        前一段时间,我一直在制作OpenCV基础知识的课件(<学习OpenCV3.0初级实战视频课程> http://edu.51cto.com/course/10381.html,< ...

  5. 图像处理 100 问!!

    图像处理 100 问!! 参考链接地址:https://github.com/gzr2017/ImageProcessing100Wen English is here (KuKuXia transl ...

  6. 《OpenCV3编程入门》学习笔记6 图像处理(三)形态学滤波(1):腐蚀与膨胀

    第6章 图像处理 6.3 形态学滤波(1):腐蚀与膨胀 6.3.1 形态学概述 1.数学形态学(Mathematical morphology):建立在格论和拓扑学基础上的图像分析学科,是数学形态学图 ...

  7. 《OpenCV3编程入门》学习笔记6 图像处理(二)非线性滤波:中值滤波、双边滤波

    第6章 图像处理 6.2 非线性滤波:中值滤波.双边滤波 6.2.1 非线性滤波 很多情况下,使用领域像素的非线性滤波会得到更好的效果,如在噪声是散粒噪声而不是高斯噪声,即图像偶尔会出现很大值时,高斯 ...

  8. 《OpenCV3编程入门》学习笔记6 图像处理(一)线性滤波:方框滤波、均值滤波、高斯滤波

    第6章 图像处理 6.1 线性滤波:方框滤波.均值滤波.高斯滤波 6.1.1 图像滤波与滤波器 1.图像滤波:在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制 目的: (1)抽出对象的特征作为图 ...

  9. Python,OpenCV图像处理超好用的工具包imutils

    imutils是我崇拜的大佬Adrian贡献的源码包,其中包含许多图像处理便捷的方法: 安装: pip install imutils 包含的工具类及方法列表: 图像平移方法 # 平移向右25px,向 ...

最新文章

  1. 《C#精彩实例教程》小组阅读09 -- C#数组与集合
  2. PID入门的十五个基本概念
  3. MFC的CWnd和HWND之间互相转换方法
  4. CCNP精粹系列之十六--实现三层交换的vlan间通信和路由器的配合使用
  5. python语言中不用来定义函数的关键字_Python 语言中用来定义函数的关键字是
  6. 【渝粤题库】陕西师范大学201571金融法作业(专升本)
  7. oracle数据库改名步骤,oracle 11g2 数据库改名详细解释 oracle数据库改名详解 oracle database 改名详解 dbname...
  8. iOS10 打开APP设置界面和WIFI界面
  9. Python高级爬虫实战,JS解密咪咕音乐登录参数分析
  10. php 匹配括号的个数,php 正则匹配括号内容 PHP实现正则匹配所有括号中的内容
  11. 【报告分享】2021年人工智能安全风险及治理研究报告.pdf(附下载链接)
  12. VM安装rhel或linux后,声音很响,如何关闭
  13. java利用opencv降维_PCA主成分分析 特征降维 opencv实现
  14. Rails开发细节《六》ActiveRecord Validationa and Callbacks验证和回调
  15. 贪吃蛇html游戏代码
  16. 修复:Linux系统机箱前置面板耳机插孔没声音
  17. 《人格心理学》读书笔记
  18. 每日一题(4.27 - 5.2)
  19. 程序员找工作-----人力资源面试题
  20. 【前端领域】3D旋转超美相册(HTML+CSS)

热门文章

  1. 使用JQuery从客户端调用C#方法
  2. 实模式与保护模式详解三:寻址方式
  3. leetcode 268. Missing Number
  4. LAMP架构之个人博客搭建
  5. 内存与存储之边界迎来变革
  6. Swift 3 新特性
  7. Linux sed命令使用
  8. 移动互联网时代: 妈,我回不去了
  9. 截图推荐:FastStone Capture使用教程
  10. discuz7记录下url静态化的apache2.2配置