如何知道像素在CvBlob中?

时间:2014-05-26 14:53:53

标签: c++ image-processing

我使用的是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.
  };

我有两个问题:

  1. 如何知道带有(x,y)坐标的像素是blob?

  2. 我不理解这个结构中所有字段的含义,有人可以向我解释一下吗?

  3. 非常感谢!

    T&amp; T公司

1 个答案:

答案 0 :(得分:1)

1-从未使用过cvblob,但似乎是你所需要的pointPolygonTest

这样的东西
pointPolygonTest(contour, Point2f(x,y), false);

应该使用。

2-这个结构看起来像是opencv中使用的shape descriptors的接口。时刻,区域,时刻等都被包裹着。 Moments用于查找质心(质心),面积,旋转不变性和一般的形状匹配。 Contour是你的blob的边界。 Internal contours是位于里面的儿童轮廓。 Max and min points是外部点,可以帮助定义边界矩形。 Label似乎只是一张贴纸