📄 objectrecognition.h
字号:
// File: ObjectRecognition.h
// Date: 27/02/02
#ifndef _ObjectRecognition_h_DEFINED
#define _ObjectRecognition_h_DEFINED
#include "../Common/VisionObject.h"
#include "VisionData.h"
#include "../Common/Common.h"
#include "EllipseFitting.h"
#define FIELD_LENGTH 500
#define MINBALLAREA 16
#define MAXBALLS 20
//#define EFFECTIVE_IMAGE_HEIGHT IMAGE_HEIGHT-1 // last line of image is kind of bad.
#define MAX_BEACONS 5
#define MIN_BEACON_SIZE 2
#define MIN_BEACON_BLOB 2
// Verify Goal Parameters
#define GOAL_X_INCREMENT 5
#define GOAL_Y_SEARCH 5
#define BLOB_DIST_TO_EDGE 5 // Minimum distance from the edge that is allow before distance calculations for the goal will be performed
#define GOAL_BLOB_DIST_TO_EDGE 25
// Horizon Elevation Check Parameters
#define HORIZON_BALL_DIST 50
class ObjectRecognition {
public:
ObjectRecognition();
// lots of these could go private.
int numBalls_;
VisionObject* balls_;
#ifdef _WIN32
int* numBlobsClone_;
Blob** blobsClone_;
int numBlobsVO_;
int* pixg;
int pixnumg;
#endif // _WIN32
double CalculateEffectiveRoll(double pan, double tilt, double roll);
void Initialize(void);
bool CheckPoint(int xp[], int yp[], int n, int x, int y);
void FindVisionObjects(VisionData*);
void FindBlobs();
void FindBalls();
void FindBar();
void FindBeacons();
void FindGoals();
void FindRobots();
void CullRepeats();
private:
bool VerifyBallRadius(Blob*);
double RatioDistanceCalc(Blob*,bool);
bool VerifyBlob(Blob* testBlob, int area, const double RATIO_LIMIT);
int VerifyGoals(Blob*);
bool MergeHalfBeacons(Blob*, Blob*);
int FindHalfBeacons(Colour,VisionObject::ObjectType,VisionObject::ObjectType,Blob*,int);
double CalculateBeaconDistance(Blob*, Blob*);
double CalculateBeaconDistance2(Blob*, Blob*);
int FindGoalsWork(Colour,VisionObject::ObjectType,VisionObject::ObjectType,VisionObject::ObjectType);
void FindRobotsWork(Colour,VisionObject::ObjectType,int,int,double,double);
bool AddBeacon(Blob *upperBlob, Blob *lowerBlob, VisionObject::ObjectType type, int pinkIndex);
bool CloseToHorizon(int,int,int);
void AddRunToBlob(Run addRun);
void ConsumeBlob(Blob* consumingBlob, Blob* consumedBlob);
// Sanity Factor System
void CalculateBallConfidence(VisionObject*);
void CalculateGoalConfidence(VisionObject*);
void CalculateBeaconConfidence(VisionObject*);
Blob* prevBlob[NUMCOLOURS];
VisionData* visionData_;
EllipseFitting ellipseFitting;
VisionObject previousBallObject;
int colourCounter[NUMCOLOURS];
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -