我正在使用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
似乎只是一个贴纸