overte/Frameworks/CVBlob.framework/Versions/A/Headers/BlobContour.h
2013-01-22 13:45:37 -08:00

99 lines
1.8 KiB
C++

#ifndef BLOBCONTOUR_H_INCLUDED
#define BLOBCONTOUR_H_INCLUDED
#include "list"
#include <opencv/cv.h>
//#include "cxtypes.h" //AO
#include <opencv/cxcore.h> //
//! Type of chain codes
typedef unsigned char t_chainCode;
//! Type of list of chain codes
typedef CvSeq* t_chainCodeList;
//! Type of list of points
typedef CvSeq* t_PointList;
//! Max order of calculated moments
#define MAX_MOMENTS_ORDER 3
//! Blob contour class (in crack code)
class CBlobContour
{
friend class CBlob;
friend class CBlobProperties; //AO
public:
//! Constructors
CBlobContour();
CBlobContour(CvPoint startPoint, CvMemStorage *storage );
//! Copy constructor
CBlobContour( CBlobContour *source );
~CBlobContour();
//! Assigment operator
CBlobContour& operator=( const CBlobContour &source );
//! Add chain code to contour
void AddChainCode(t_chainCode code);
//! Return freeman chain coded contour
t_chainCodeList GetChainCode()
{
return m_contour;
}
bool IsEmpty()
{
return m_contour == NULL || m_contour->total == 0;
}
//! Return all contour points
t_chainCodeList GetContourPoints();
protected:
CvPoint GetStartPoint() const
{
return m_startPoint;
}
//! Clears chain code contour
void ResetChainCode();
//! Computes area from contour
double GetArea();
//! Computes perimeter from contour
double GetPerimeter();
//! Get contour moment (p,q up to MAX_CALCULATED_MOMENTS)
double GetMoment(int p, int q);
//! Crack code list
t_chainCodeList m_contour;
private:
//! Starting point of the contour
CvPoint m_startPoint;
//! All points from the contour
t_PointList m_contourPoints;
//! Computed area from contour
double m_area;
//! Computed perimeter from contour
double m_perimeter;
//! Computed moments from contour
CvMoments m_moments;
//! Pointer to storage
CvMemStorage *m_parentStorage;
};
#endif //!BLOBCONTOUR_H_INCLUDED