cvaux.h.svn-base
来自「非结构化路识别」· SVN-BASE 代码 · 共 1,161 行 · 第 1/4 页
SVN-BASE
1,161 行
/****************************************************************************************
tracking_info is a rectangular array; one row per camera, num_objects elements per row.
The id field of any unused slots must be -1. Ids need not be ordered or consecutive. On
completion, the return value is the number of objects located; i.e., the number of objects
visible by more than one camera. The id field of any unused slots in tracked objects is
set to -1.
****************************************************************************************/
/****************************************************************************************\
* Skeletons and Linear-Contour Models *
\****************************************************************************************/
typedef enum CvLeeParameters
{
CV_LEE_INT = 0,
CV_LEE_FLOAT = 1,
CV_LEE_DOUBLE = 2,
CV_LEE_AUTO = -1,
CV_LEE_ERODE = 0,
CV_LEE_ZOOM = 1,
CV_LEE_NON = 2
} CvLeeParameters;
#define CV_NEXT_VORONOISITE2D( SITE ) ((SITE)->edge[0]->site[((SITE)->edge[0]->site[0] == (SITE))])
#define CV_PREV_VORONOISITE2D( SITE ) ((SITE)->edge[1]->site[((SITE)->edge[1]->site[0] == (SITE))])
#define CV_FIRST_VORONOIEDGE2D( SITE ) ((SITE)->edge[0])
#define CV_LAST_VORONOIEDGE2D( SITE ) ((SITE)->edge[1])
#define CV_NEXT_VORONOIEDGE2D( EDGE, SITE ) ((EDGE)->next[(EDGE)->site[0] != (SITE)])
#define CV_PREV_VORONOIEDGE2D( EDGE, SITE ) ((EDGE)->next[2 + ((EDGE)->site[0] != (SITE))])
#define CV_VORONOIEDGE2D_BEGINNODE( EDGE, SITE ) ((EDGE)->node[((EDGE)->site[0] != (SITE))])
#define CV_VORONOIEDGE2D_ENDNODE( EDGE, SITE ) ((EDGE)->node[((EDGE)->site[0] == (SITE))])
#define CV_TWIN_VORONOISITE2D( SITE, EDGE ) ( (EDGE)->site[((EDGE)->site[0] == (SITE))])
#define CV_VORONOISITE2D_FIELDS() \
struct CvVoronoiNode2D *node[2]; \
struct CvVoronoiEdge2D *edge[2];
typedef struct CvVoronoiSite2D
{
CV_VORONOISITE2D_FIELDS()
struct CvVoronoiSite2D *next[2];
} CvVoronoiSite2D;
#define CV_VORONOIEDGE2D_FIELDS() \
struct CvVoronoiNode2D *node[2]; \
struct CvVoronoiSite2D *site[2]; \
struct CvVoronoiEdge2D *next[4];
typedef struct CvVoronoiEdge2D
{
CV_VORONOIEDGE2D_FIELDS()
} CvVoronoiEdge2D;
#define CV_VORONOINODE2D_FIELDS() \
CV_SET_ELEM_FIELDS(CvVoronoiNode2D) \
CvPoint2D32f pt; \
float radius;
typedef struct CvVoronoiNode2D
{
CV_VORONOINODE2D_FIELDS()
} CvVoronoiNode2D;
#define CV_VORONOIDIAGRAM2D_FIELDS() \
CV_GRAPH_FIELDS() \
CvSet *sites;
typedef struct CvVoronoiDiagram2D
{
CV_VORONOIDIAGRAM2D_FIELDS()
} CvVoronoiDiagram2D;
/* Computes Voronoi Diagram for given polygons with holes */
OPENCVAUXAPI int cvVoronoiDiagramFromContour(CvSeq* ContourSeq,
CvVoronoiDiagram2D** VoronoiDiagram,
CvMemStorage* VoronoiStorage,
CvLeeParameters contour_type CV_DEFAULT(CV_LEE_INT),
int contour_orientation CV_DEFAULT(-1),
int attempt_number CV_DEFAULT(10));
/* Computes Voronoi Diagram for domains in given image */
OPENCVAUXAPI int cvVoronoiDiagramFromImage(IplImage* pImage,
CvSeq** ContourSeq,
CvVoronoiDiagram2D** VoronoiDiagram,
CvMemStorage* VoronoiStorage,
CvLeeParameters regularization_method CV_DEFAULT(CV_LEE_NON),
float approx_precision CV_DEFAULT(CV_LEE_AUTO));
/* Deallocates the storage */
OPENCVAUXAPI void cvReleaseVoronoiStorage(CvVoronoiDiagram2D* VoronoiDiagram,
CvMemStorage** pVoronoiStorage);
/*********************** Linear-Contour Model ****************************/
struct CvLCMEdge;
struct CvLCMNode;
typedef struct CvLCMEdge
{
CV_GRAPH_EDGE_FIELDS()
CvSeq* chain;
float width;
int index1;
int index2;
} CvLCMEdge;
typedef struct CvLCMNode
{
CV_GRAPH_VERTEX_FIELDS()
CvContour* contour;
} CvLCMNode;
/* Computes hybrid model from Voronoi Diagram */
OPENCVAUXAPI CvGraph* cvLinearContorModelFromVoronoiDiagram(CvVoronoiDiagram2D* VoronoiDiagram,
float maxWidth);
/* Releases hybrid model storage */
OPENCVAUXAPI int cvReleaseLinearContorModelStorage(CvGraph** Graph);
/****************************************************************************************\
* Calibration engine *
\****************************************************************************************/
OPENCVAUXAPI void cvInitPerspectiveTransform( CvSize size, const CvPoint2D32f vertex[4], double matrix[3][3],
CvArr* rectMap );
OPENCVAUXAPI void cvInitStereoRectification( CvStereoCamera* params,
CvArr* rectMap1, CvArr* rectMap2,
int do_undistortion );
#ifdef __cplusplus
typedef enum CvCalibEtalonType
{
CV_CALIB_ETALON_USER = -1,
CV_CALIB_ETALON_CHESSBOARD = 0,
CV_CALIB_ETALON_CHECKERBOARD = CV_CALIB_ETALON_CHESSBOARD
}
CvCalibEtalonType;
class CVAUX_DLL_ENTRY CvCalibFilter
{
public:
/* Constructor & destructor */
CvCalibFilter();
virtual ~CvCalibFilter();
/* Sets etalon type - one for all cameras.
etalonParams is used in case of pre-defined etalons (such as chessboard).
Number of elements in etalonParams is determined by etalonType.
E.g., if etalon type is CV_ETALON_TYPE_CHESSBOARD then:
etalonParams[0] is number of squares per one side of etalon
etalonParams[1] is number of squares per another side of etalon
etalonParams[2] is linear size of squares in the board in arbitrary units.
pointCount & points are used in case of
CV_CALIB_ETALON_USER (user-defined) etalon. */
virtual bool
SetEtalon( CvCalibEtalonType etalonType, double* etalonParams,
int pointCount = 0, CvPoint2D32f* points = 0 );
/* Retrieves etalon parameters/or and points */
virtual CvCalibEtalonType
GetEtalon( int* paramCount = 0, const double** etalonParams = 0,
int* pointCount = 0, const CvPoint2D32f** etalonPoints = 0 ) const;
/* Sets number of cameras calibrated simultaneously. It is equal to 1 initially */
virtual void SetCameraCount( int cameraCount );
/* Retrieves number of cameras */
int GetCameraCount() const { return cameraCount; }
/* Starts cameras calibration */
virtual bool SetFrames( int totalFrames );
/* Stops cameras calibration */
virtual void Stop( bool calibrate = false );
/* Retrieves number of cameras */
bool IsCalibrated() const { return isCalibrated; }
/* Feeds another serie of snapshots (one per each camera) to filter.
Etalon points on these images are found automatically.
If the function can't locate points, it returns false */
virtual bool FindEtalon( IplImage** imgs );
/* The same but takes matrices */
virtual bool FindEtalon( CvMat** imgs );
/* Lower-level function for feeding filter with already found etalon points.
Array of point arrays for each camera is passed. */
virtual bool Push( const CvPoint2D32f** points = 0 );
/* Returns total number of accepted frames and, optionally,
total number of frames to collect */
virtual int GetFrameCount( int* framesTotal = 0 ) const;
/* Retrieves camera parameters for specified camera.
If camera is not calibrated the function returns 0 */
virtual const CvCamera* GetCameraParams( int idx = 0 ) const;
virtual const CvStereoCamera* GetStereoParams() const;
/* Sets camera parameters for all cameras */
virtual bool SetCameraParams( CvCamera* params );
/* Saves all camera parameters to file */
virtual bool SaveCameraParams( const char* filename );
/* Loads all camera parameters from file */
virtual bool LoadCameraParams( const char* filename );
/* Undistorts images using camera parameters. Some of src pointers can be NULL. */
virtual bool Undistort( IplImage** src, IplImage** dst );
/* Undistorts images using camera parameters. Some of src pointers can be NULL. */
virtual bool Undistort( CvMat** src, CvMat** dst );
/* Returns array of etalon points detected/partally detected
on the latest frame for idx-th camera */
virtual bool GetLatestPoints( int idx, CvPoint2D32f** pts,
int* count, bool* found );
/* Draw the latest detected/partially detected etalon */
virtual void DrawPoints( IplImage** dst );
/* Draw the latest detected/partially detected etalon */
virtual void DrawPoints( CvMat** dst );
virtual bool Rectify( IplImage** srcarr, IplImage** dstarr );
virtual bool Rectify( CvMat** srcarr, CvMat** dstarr );
protected:
enum { MAX_CAMERAS = 3 };
/* etalon data */
CvCalibEtalonType etalonType;
int etalonParamCount;
double* etalonParams;
int etalonPointCount;
CvPoint2D32f* etalonPoints;
CvSize imgSize;
CvMat* grayImg;
CvMat* tempImg;
CvMemStorage* storage;
/* camera data */
int cameraCount;
CvCamera cameraParams[MAX_CAMERAS];
CvStereoCamera stereo;
CvPoint2D32f* points[MAX_CAMERAS];
CvMat* undistMap[MAX_CAMERAS];
CvMat* undistImg;
int latestCounts[MAX_CAMERAS];
CvPoint2D32f* latestPoints[MAX_CAMERAS];
CvMat* rectMap[MAX_CAMERAS];
/* Added by Valery */
//CvStereoCamera stereoParams;
int maxPoints;
int framesTotal;
int framesAccepted;
bool isCalibrated;
};
#endif
/****************************************************************************************\
* Utility Functions *
\****************************************************************************************/
/* helper functions for RNG initialization and accurate time measurement: x86 only */
OPENCVAUXAPI int64 cvGetTickCount( void );
OPENCVAUXAPI double cvGetTickFrequency();
#ifdef __cplusplus
#include "cvaux.hpp"
#include "cvmat.hpp"
#endif
#endif
/* End of file. */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?