#pragma once #include 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 VectorRecipeMarker; typedef std::vector::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 VectorResultMarker; typedef std::vector::iterator VectorResultMarkerIt;