#ifndef RCUT_DOT_PROCESS_H #define RCUT_DOT_PROCESS_H class CRcutDotProcess { public: CRcutDotProcess(); CRcutDotProcess(DimensionDir eDir, int id); ~CRcutDotProcess(); public: //1. »ñÈ¡ÇøÓò void getRegion(int &xPos, int &yPos, int &width, int &height); void setRegion(int xPos, int yPos, int width, int height); //2. »ñÈ¡ID int getID(void); void setID(int id); //3. »ñÈ¡ÇøÓò HalconCpp::HObject& getImage(void); HalconCpp::HObject& getChipRegion(void); HalconCpp::HObject& getRoiRegion(void); HalconCpp::HObject& getBRKRoiRegion(void); void SetStandardPoint(void); //4. Ö´Ðмì²â int Execute(DimensionDir eDir, Point2I offset); //5. ÇøÓòʾ½Ì void TechImage(void); //6. ±£´æÊý¾Ý Json::Value WriteToJson(void); void DecodeJson(Json::Value &jsValue); public: int m_nUse; CString m_strName; int m_nChamferSize; //ÑÐÄ¥Á¿ int m_nChipRange; //Chip Range int m_nChipThres; //ChipãÐÖµ int m_nStartAngle; //¿ªÊ¼½Ç¶È int m_nEndAngle; //½áÊø½Ç¶È int m_nBinThres; //±ß½çãÐÖµ int m_nEdgeSmooth; //±ß½çãÐÖµ //Judge XY int m_nDx; int m_nDy; std::vector m_nNgInfo; double m_fMaxChamber; double m_fMinChamber; double m_fAvgChamber; //BrokenÇøÓòµÄ¼ì²â int m_nBrokenUse; double m_fSigmaThres; //SigmaãÐÖµ double m_fOpenPara; //ÔëÒô²ÎÊý int m_nDistThres; //¾àÀëãÐÖµ int m_nBrokenSmooth; //ÆÆËðÆ½»¬ãÐÖµ int m_nBrokenArea; //ÆÆËðÇøÓò int m_nTech; //ʾ½Ì²ÎÊý int m_nStartDa; int m_nEndDa; Point2D m_ptArrayResult[16]; Point2D m_ptArrayStd[16]; private: int m_id; int m_nPoseX; int m_nPoseY; int m_width; int m_height; HalconCpp::HObject m_hImage; HalconCpp::HObject m_hRoiRegion; HalconCpp::HObject m_hChipRegion; HalconCpp::HObject m_hBrkRoiRegion; DimensionDir m_eDir; int m_x1; int m_y1; double m_xMmvsp; double m_yMmvsp; HalconCpp::HObject m_hResultRegion; private: //1. »ñȡͼÏñ bool getProcImage(DimensionDir eDir, Point2I offset, HalconCpp::HObject &hImage); //2. »ñÈ¡·Ö±æÂÊ void getMmvsp(DimensionDir eDir); //3. »ñÈ¡½á¹û void getResult(void); //4. »ñÈ¡ÀªÐÎ void InspectChip(HalconCpp::HObject &hImage); //5. Top¼ì²â void InspectTopChip(HalconCpp::HObject &hImage); //6. Bot¼ì²â void InspectBotChip(HalconCpp::HObject &hImage); //7. »ñÈ¡R½Ç¶ÈµÄ³ß´çÂÖÀª bool getRCutRegion(std::vector vStartPoints, std::vector vEndPoints, HalconCpp::HObject &hTargetRegion, HalconCpp::HObject &hRoiRegion); //8. Éú²úÇøÓò void genRectangeRegion(HalconCpp::HObject &hRectRegion); //9. ͼÏñ·Ö¸î void ImageBinThreshold(HalconCpp::HObject &hImage, HalconCpp::HObject &hRectRegion, HalconCpp::HObject &hRcutRegion, HalconCpp::HObject &hTarget); //10. »ñÈ¡ÕæÊµµÄRCUT¿ò bool getRCutRealRegion(HalconCpp::HObject &hSelectRegion, std::vector vPoints, HalconCpp::HObject &hTarget); //11. »ñÈ¡µãÕóÐòÁÐ bool getRcutEdgePoints(HalconCpp::HObject &hImage, std::vector &vStartPoints, std::vector &vEndPoints, std::vector &vResPoints, double &maxDist, double &minDist); //12. Ö´ÐÐÇøÓò void InpsectChipRegion(HalconCpp::HObject &hChipRegion, HalconCpp::HObject &hRoiRegion); //13. ¼ì²éBroken int CheckBroken(HalconCpp::HObject& hImage, HalconCpp::HObject &hRoiRegion); //14. ·ÖÎöÆðʼµãºÍ½áÊøµã void AnalysisStartEndPoints(std::vector& vStartPoints, std::vector& vEndPoints, std::vector& vResPoints); //15. ·´Éä±ä»»µã Point2D ReflectPoint(Point2D ptStart, Point2D ptEnd, double offset); //16. ·ÖÎöÆÆÆ¬ void AnalysisBroken(HalconCpp::HObject& hImage); }; #endif