#ifndef VISION_BUFFER_PRO #define VISION_BUFFER_PRO #include "VisionRecipe.h" typedef struct _LineMetrologyPara { int direction; int getMode; int getDirection; double stepLength; double stepDist; int threshold; int numSample; double minScore; }LineMetrologyPara; class CVisionBufferPro { public: CVisionBufferPro(); ~CVisionBufferPro(); public: //1. ͼÏñת»» static bool bufferToObject(DimensionDir eDir, int height, HalconCpp::HObject &hImage); //2. ½ØÍ¼Í¼Ïñ static bool getImageROI(DimensionDir eDir, HalconCpp::HObject &hImage, int x1, int y1, int x2, int y2); static bool getIndexImage(DimensionDir eDir, HalconCpp::HObject *hImage, int index); //3. »ñÈ¡¾àÀëµÄ¼ì²â½á¹û static bool getDistResult(DimensionDir eDir, CDistDotProcess *dot, double &result, int &xPosPxl, int &yPosPxl); //4. ²éÕÒµã static bool GetMeasurePos(HalconCpp::HObject &hObject, Line2D line, int threshold, int modeTrans, int step, Point2D &ptStart, Point2D &ptEnd); static bool GetMeasurePosKeyLimit(HalconCpp::HObject &hObject, Line2D line, int nTypePoint, int threshold, int modeTrans, int step, int distLimit, Point2D &ptStart, Point2D &ptEnd); static bool GetMeasureRCutPos(HalconCpp::HObject &hObject, Line2D line, int threshold, int modeTrans, int chamberSize, double proDist, Point2D &ptStart, Point2D &ptEnd); static bool GetMeasureNearPos(HalconCpp::HObject& hObject, Line2D line, int threshold, int modeTrans, int step, Point2D& ptStart, Point2D& ptEnd); //5. »ñÈ¡¾àÀëµÄ¼ì²â½á¹û static int getDistResult(DimensionDir eDir, CDistDotProcess *dot, double &distResult); //6. ×ø±êת»» static bool TransformToReal(DimensionDir eDir, Point2I point, int nType, Point2I &result); //7. »ñÈ¡×ø±ê ×øÉϵã×ø±ê¡¢ÓÒÉϵã×ø±ê£¬ÓÒϵã×ø±ê£¬×óϵã×ø±ê static void getRect2Point(Point2D rect2CenterPoint, double rect2Phi, double rect2Length1, double rect2Length2, Point2D *rect2Points); //8. »ñÈ¡¾ØÐεÄбֱÏß static Line2D getRect2Line(Point2D rect2CenterPoint, double rect2Phi, int rect2Length2); //9. ²éÕÒÖ±Ïß static bool LineMeasureByRuler(HalconCpp::HObject &hObject, Line2D line, LineMetrologyPara shapeMetrologyPara, Line2D &lineResult); //10. »ñÈ¡ÏßɨµÄͼÏñÖ¡µÄ¿í¶ÈºÍ¸ß¶È static void getLineFrameSize(DimensionDir eDir, int &nFrameWidth, int &nFrameHeight); //11. ²éÕÒÇиî static bool findCutLine(DimensionDir eDir, Point2I keyPoint, int keyRange, int keyThres, Point2I &result); //12. ²éÕÒNorchȱÏÝ static int findNorchDefect(DimensionDir eDir, std::vector vPoints, CRect roiRect, int nThres, int nOffset, int nBinThres, int szType, int xFzSize, int yFzSize, CRect *aryResult); private: }; #endif