mirror of
https://github.com/overte-org/overte.git
synced 2025-08-05 03:38:28 +02:00
99 lines
1.8 KiB
C++
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
|
|
|
|
|