【20160924】GOCVHelper 图像处理部分(2)

简介: //根据轮廓的面积大小进行选择     vector  selectShapeArea(Mat src,Mat& draw,vector contours,int minvalue,int maxvalue){         vector result_contours;         draw = Mat::zeros(src.
//根据轮廓的面积大小进行选择
    vector<VP>  selectShapeArea(Mat src,Matdraw,vector<VPcontours,int minvalue,int maxvalue){
        vector<VPresult_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,centerFONT_HERSHEY_PLAIN ,5,Scalar(255-iRandB,255-iRandG,255-iRandR),5);
        }
        return result_contours;
    }
    vector<VP>  selectShapeArea(vector<VPcontours,int minvalue,int maxvalue)
    {
        vector<VPresult_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打印。
 





目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
3月前
|
存储 编解码 算法
OpenCV 图像处理学习手册:1~5
OpenCV 图像处理学习手册:1~5
|
3月前
|
openCL 开发工具 C语言
OpenCV 图像处理学习手册:6~7
OpenCV 图像处理学习手册:6~7
|
2月前
|
编解码 算法 自动驾驶
探索OpenCV:图像处理的利器
探索OpenCV:图像处理的利器
30 0
|
8月前
|
存储 Linux 计算机视觉
openCV之图像处理入门
openCV之图像处理入门
|
10月前
|
资源调度 API 计算机视觉
OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)
OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)
105 0
|
存储 编解码 计算机视觉
OpenCV3 图像处理笔记
OpenCV3 图像处理笔记
|
人工智能 JavaScript 生物认证
Opencv 图像处理:数字图像的必会知识
Opencv 图像处理:数字图像的必会知识
193 0
Opencv 图像处理:数字图像的必会知识
|
Web App开发 算法 C#
我学习图像处理的小结
前一段时间,我一直在制作OpenCV基础知识的课件(《学习OpenCV3.0初级实战视频课程》 http://edu.51cto.com/course/10381.html,《学习OpenCV3.0中级实战视频课程》http://edu.51cto.com/course/10712.html)。
1298 0
|
计算机视觉
【20160924】GOCVHelper 图像处理部分(1)
增强后的图像需要通过图像处理获得定量的值。在实际程序设计过程中,轮廓很多时候都是重要的分析变量。参考Halcon的相关函数,我增强了Opencv在这块的相关功能。      //寻找最大的轮廓     VP FindBigestContour(Mat src){          ...
1186 0
|
算法 计算机视觉
【20160924】GOCVHelper 图像处理部分(3)
//根据轮廓的圆的特性进行选择     vector selectShapeCircularity(Mat src,Mat& draw,vector contours,float minvalue,float maxvalue){         vector result_contours;         draw = Mat::zeros(src.
780 0