【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
目录
相关文章
|
1月前
|
计算机视觉
图像处理之直方图均衡化
图像处理之直方图均衡化
16 0
|
2月前
|
算法 计算机视觉
【OpenCV】- 分水岭算法
【OpenCV】- 分水岭算法
|
2月前
|
算法 数据可视化 计算机视觉
使用Python实现图像处理中的边缘检测算法
图像处理中的边缘检测是计算机视觉和图像识别领域的重要技术之一。本文将介绍如何利用Python语言实现常见的边缘检测算法,包括Sobel、Canny等,并结合实例演示其在图像处理中的应用。
147 16
|
2月前
|
计算机视觉
opencv滤波技术
opencv滤波技术
46 0
|
9月前
|
C++
OpenCV-图像锐化
OpenCV-图像锐化
|
资源调度 API 计算机视觉
OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)
OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)
134 0
|
人工智能 JavaScript 生物认证
Opencv 图像处理:数字图像的必会知识
Opencv 图像处理:数字图像的必会知识
211 0
Opencv 图像处理:数字图像的必会知识
|
计算机视觉
OpenCV | OpenCV哈里斯 (Harris)角点检测
OpenCV | OpenCV哈里斯 (Harris)角点检测
144 0
OpenCV | OpenCV哈里斯 (Harris)角点检测
|
算法 计算机视觉
【20160924】GOCVHelper 图像处理部分(3)
//根据轮廓的圆的特性进行选择     vector selectShapeCircularity(Mat src,Mat& draw,vector contours,float minvalue,float maxvalue){         vector result_contours;         draw = Mat::zeros(src.
793 0
|
计算机视觉
【20160924】GOCVHelper 图像处理部分(1)
增强后的图像需要通过图像处理获得定量的值。在实际程序设计过程中,轮廓很多时候都是重要的分析变量。参考Halcon的相关函数,我增强了Opencv在这块的相关功能。      //寻找最大的轮廓     VP FindBigestContour(Mat src){          ...
1194 0

热门文章

最新文章