【问题标题】:openCV C++ reduce objects/blobs to centroidsopenCV C++ 将对象/斑点减少到质心
【发布时间】:2018-09-28 11:49:43
【问题描述】:

任务:

我尝试编写一种方法,将二值图像中的对象减少到它们的质心(即质心)。

【问题讨论】:

    标签: c++ opencv centroid


    【解决方案1】:

    参数:

    Mat *pMA_Out, Mat *pMA_In, int mode, int method, unsigned int thickness
    

    正文:

    //Allocate contours
    vector<vector<Point>> vvp_countours;
    
    //Find countours
    findContours(
                *pMA_In,
                vvp_countours,
                mode,
                method,
                Point(0, 0));
    
    //Get the moments
    vector<Moments> v_moments(vvp_countours.size());
    for(int c = 0; c < vvp_countours.size(); c++)
        v_moments[c] = moments(vvp_countours[c], false);
    
    //Get the mass centers
    vector<Point2f> v_centroid(vvp_countours.size());
    for(int c = 0; c < vvp_countours.size(); c++)
        v_centroid[c] = Point2f(
                    v_moments[c].m10 / v_moments[c].m00,
                    v_moments[c].m01 / v_moments[c].m00);
    
    //Create output image
    Mat MA_tmp = Mat(pMA_In->size(), CV_8UC1, Scalar(0));
    
    //Draw centroids
    for(int c = 0; c < v_centroid.size(); c++)
        line(
                    MA_tmp,
                    v_centroid[c],
                    v_centroid[c],
                    Scalar(255),
                    thickness,
                    8);
    *pMA_Out = MA_tmp.clone();
    

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多