#pragma once
|
#include <vector>
|
|
enum EdgeDirectionType { EdgeDirection_Horiz=0, EdgeDirection_Vert, EdgeDirection_Count };
|
enum EdgeSearchType { EdgeSearch_MinMax=0, EdgeSearch_Out2In, EdgeSearch_In2Out, EdgeSearch_Count };
|
enum EdgeSignalType { EdgeSignal_Negative=0, EdgeSignal_Positive, EdgeSignal_None, EdgeSignal_Count };
|
enum EdgeResultType { EdgeResult_Mid=0, EdgeResult_Left, EdgeResult_Right, EdgeResult_Count };
|
enum SubPixelType { SubPixel_Linear=0, SubPixel_Quadratic, SubPixel_Gaussian, SubPixel_Quadratic_Regress, SubPixel_Gaussian_Regress, SubPixel_Count };
|
enum PreProcessType { PreProc_None=0, PreProc_Sobel, PreProc_Count };
|
enum MeasureType { Measure_Line=0, Measure_Circle, Measure_Ellipse };
|
|
class AFX_EXT_CLASS CRecipeMarker
|
{
|
public:
|
CRecipeMarker(void);
|
~CRecipeMarker(void);
|
void Reset()
|
{
|
m_nTypeBand = 3;
|
m_nTypeSubPixel = SubPixel_Quadratic;
|
m_nTypePreProcess = PreProc_None;
|
m_nMeasureType = Measure_Line;
|
|
m_nEdgeLeft = EdgeSignal_Positive;
|
m_nEdgeRight = EdgeSignal_Negative;
|
m_nEdgeKernelSize = 4;
|
m_dEdgeKernelSigma = 1.0;
|
m_dEdgeAngle = 0.0;
|
m_dEdgeThreshold = 5.0;
|
m_dEdgePosiThres = 5.0;
|
m_dEdgeNegaThres = -5.0;
|
m_nEdgeDirection = EdgeDirection_Vert;
|
m_nEdgeSearchType = EdgeSearch_MinMax;
|
m_nIteration = 10;
|
|
m_dLength = 20.0;
|
m_dLengthVariation = 5.0;
|
|
m_nCircleThreshold = 100;
|
m_nCircleBlobMargin = 3;
|
|
m_nROILeft = -1;
|
m_nROITop = -1;
|
m_nROIWidth = -1;
|
m_nROIHeight = -1;
|
}
|
|
int m_nTypeBand;
|
int m_nTypeSubPixel;
|
int m_nTypePreProcess;
|
int m_nMeasureType;
|
|
int m_nEdgeLeft;
|
int m_nEdgeRight;
|
int m_nEdgeKernelSize;
|
double m_dEdgeKernelSigma;
|
double m_dEdgeAngle;
|
double m_dEdgeThreshold;
|
double m_dEdgePosiThres;
|
double m_dEdgeNegaThres;
|
int m_nEdgeDirection;
|
int m_nEdgeSearchType;
|
|
int m_nIteration;
|
|
double m_dLength;
|
double m_dLengthVariation;
|
|
int m_nCircleThreshold;
|
int m_nCircleBlobMargin;
|
|
int m_nROILeft;
|
int m_nROITop;
|
int m_nROIWidth;
|
int m_nROIHeight;
|
};
|
typedef std::vector<CRecipeMarker> VectorRecipeMarker;
|
typedef std::vector<CRecipeMarker>::iterator VectorRecipeMarkerIt;
|
|
class AFX_EXT_CLASS CResultMarker
|
{
|
public:
|
CResultMarker(void);
|
~CResultMarker(void);
|
void Reset()
|
{
|
m_nResultCode = 0;
|
m_nMeasureType = 0;
|
m_nEdgeDirection = 0;
|
m_dEdgeValue = 0.0;
|
|
m_dCenterX = 0.0;
|
m_dCenterY = 0.0;
|
|
m_dLength = 0.0;
|
m_dFirstX = 0.0;
|
m_dFirstY = 0.0;
|
|
m_dSecondX = 0.0;
|
m_dSecondY = 0.0;
|
}
|
|
int m_nResultCode;
|
int m_nMeasureType;
|
int m_nEdgeDirection;
|
double m_dEdgeValue;
|
|
double m_dCenterX;
|
double m_dCenterY;
|
double m_dLength;
|
|
double m_dFirstX;
|
double m_dFirstY;
|
|
double m_dSecondX;
|
double m_dSecondY;
|
|
};
|
typedef std::vector<CResultMarker> VectorResultMarker;
|
typedef std::vector<CResultMarker>::iterator VectorResultMarkerIt;
|