我正在使用CvBlob库,下面是CvBlob结构

 struct CvBlob
  {
    CvLabel label; ///< Label assigned to the blob.

    union
    {
      unsigned int area; ///< Area (moment 00).
      unsigned int m00; ///< Moment 00 (area).
    };

    unsigned int minx; ///< X min.
    unsigned int maxx; ///< X max.
    unsigned int miny; ///< Y min.
    unsigned int maxy; ///< y max.

    CvPoint2D64f centroid; ///< Centroid.

    double m10; ///< Moment 10.
    double m01; ///< Moment 01.
    double m11; ///< Moment 11.
    double m20; ///< Moment 20.
    double m02; ///< Moment 02.

    double u11; ///< Central moment 11.
    double u20; ///< Central moment 20.
    double u02; ///< Central moment 02.

    double n11; ///< Normalized central moment 11.
    double n20; ///< Normalized central moment 20.
    double n02; ///< Normalized central moment 02.

    double p1; ///< Hu moment 1.
    double p2; ///< Hu moment 2.

    CvContourChainCode contour;           ///< Contour.
    CvContoursChainCode internalContours; ///< Internal contours.
  };


我对此有两个问题:


如何知道坐标为(x,y)的像素在斑点中?
我不了解此结构中所有字段的含义,有人可以向我解释吗?


非常感谢!

T&T

最佳答案

1-从未使用过cvblob,但是看来您需要的是pointPolygonTest

就像是

pointPolygonTest(contour, Point2f(x,y), false);


应该使用。

2-该结构似乎是opencv中使用的shape descriptors的接口。时刻,面积,时间等等都被包裹起来。 Moments通常用于查找质心(质心),面积,旋转不变性和形状匹配。 Contour是斑点的边界。 Internal contours是位于内部的子轮廓。 Max and min points是外部点,可以帮助定义一个边界矩形。 Label似乎只是一个贴纸

10-06 14:26