#ifndef CLS_VISION_H
|
#define CLS_VISION_H
|
|
#ifdef EXPORT_DLL_BASE_VISION
|
#define EXPORTED_VISION _declspec(dllexport)
|
#else
|
#define EXPORTED_VISION _declspec(dllimport)
|
#endif
|
|
class EXPORTED_VISION ClsVision
|
{
|
public:
|
ClsVision();
|
~ClsVision();
|
|
public:
|
//1. »ñÈ¡µ±Ç°µÄÈí¼þ°æ±¾
|
static std::string GetVersion(void);
|
|
//2. »ñÈ¡¸üÐÂÄÚÈÝ
|
static std::string GetUpdate(void);
|
|
//4. »ñÈ¡µ±Ç°µÄĿ¼
|
static std::string GetAppPathA();
|
|
public:
|
//1. ·ÂÉä±ä»»
|
static ParaAffine2D VectorAngleToRigid(Point2D ptOrigine, double angleOrigine, Point2D ptTarget, double angleTarget);
|
|
//2. µãµ½µãµÄ¾àÀë
|
static double DistancePP(Point2D pt1, Point2D pt2);
|
|
//3. µãµ½Ö±ÏߵľàÀë
|
static double DistancePL(Point2D pt, Line2D line);
|
|
//4. Ö±ÏߵĽ»µã
|
static Point2D LineIntersection(Line2D line1, Line2D line2);
|
|
//5. Ö±ÏߵĽǶÈ
|
static double LineAngle(Line2D line);
|
|
//6. Ö±ÏßÓëÖ±ÏߵļнÇ
|
double AngleLL(Line2D line1, Line2D line2);
|
|
//7. ×ø±êת»»
|
static Point2D CoordinateTransform(Point2D pt, ParaAffine2D affine);
|
|
//8. µãµ½Ö±ÏߵĴ¹×ã
|
static Point2D ProjectionPL(Point2D pt, Line2D line);
|
|
//9. ½Ç¶Èת»»Îª»¡¶È
|
static double DegreeToRad(double angle);
|
|
//10. »¡¶Èת»»Îª½Ç¶È
|
static double RadToDegree(double rad);
|
|
//11. CosÖµ
|
static double GetCos(double rad);
|
|
//12. SinÖµ
|
static double GetSin(double rad);
|
|
//13. ×îС¶þ³Ë·¨Ö±ÏßÄâºÏ
|
static void FitLiner(Point2D *ptArray, int sz, double &ka, double &kb);
|
|
//14. ÄâºÏÔ²
|
static Circle2D FitCircle(Point2D *ptArray, int sz);
|
|
//15. Ö±ÏߵĸÕÐԱ任
|
static ParaAffine2D LineVectorToRigid(Line2D lineStandard, Line2D lineReal);
|
|
//16. Èýµã³ÉÔ±
|
static Circle2D ThreePointsToCircle(Point2D pt1, Point2D pt2, Point2D pt3);
|
|
//17. Ö´Ðб궨£¬·ÂÉä±ä»¯
|
static ParaAffine2D VectorToHomMat2d(std::vector<Point2D> vPtOrigine, std::vector<Point2D> vPtTarget);
|
|
//18. ¸ÕÐԱ任
|
static ParaAffine2D VectorToRigid(std::vector<Point2D> vPtOrigine, std::vector<Point2D> vPtTarget);
|
|
//19. ·ÂÉä²ÎÊý
|
static void HomMat2dToAffinePar(ParaAffine2D affine, double &xMmvsp, double &yMmvsp, double &angle, double &theta);
|
|
//20. ·ÂÉä±ä»»
|
static ParaAffine2D VectorToSimilarity(std::vector<Point2D> vPtOrigine, std::vector<Point2D> vPtTarget);
|
|
//21. ´´½¨Ô²µÄÀëÉ¢µã
|
static void GenCirclePoints(Point2I ptCenter, double radius, double stepLength, std::vector<Point2I> &vPtCircle);
|
|
//22. Ö´Ðб궨
|
static CalibrateResult CameraCalibrate(double *px, double *py, double *xmm, double *ymm, int sz);
|
|
//23. ×ø±êת»»
|
static Point2D CoordinateTransform(Point2D pt, CalibrateResult calibrate);
|
|
//24. Ïà»ú±ê¶¨
|
static void CalibrateCamera(Point2D *ptArrayCamera, Point2D *ptArrayWorld, int sz, ParaCalibrate &result);
|
|
//25. ÐýתÖÐÐÄ
|
static Point2D GetRotateCenter(Point2D ptOrigine, Point2D ptRotate, double angle);
|
|
//26. XYTheta±ê¶¨
|
static void CalibrateXyTheta(std::vector<Point2D> vPtOrgine, std::vector<Point2D> vPtReal, double angle, ParaCalibrate &result);
|
|
public:
|
//1. ¶ÔÏóÊÇ·ñ´æÔÚ
|
static bool ObjectExist(HalconCpp::HObject &hObject);
|
|
//2. ¿½±´Í¼Ïñ
|
static void CopyImage(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget);
|
|
//3. ²úÉú¿Õ¶ÔÏó
|
static void GenEmptyObject(HalconCpp::HObject &hObject);
|
|
//4. ¾ùÖµÂ˲¨
|
static void ImageMean(HalconCpp::HObject &hObject, int maskWidth, int maskHeight, HalconCpp::HObject &hTarget);
|
|
//5. »Ò¶È±ÕÔËËã
|
static void GrayClosing(HalconCpp::HObject &hObject, int maskWidth, int maskHeight, HalconCpp::HObject &hTarget);
|
|
//6. »Ò¶È¿ªÔËËã
|
static void GrayOpening(HalconCpp::HObject &hObject, int maskWidth, int maskHeight, HalconCpp::HObject &hTarget);
|
|
//7. ͼÏñ¾ùÖµ
|
static void ImageIntensity(HalconCpp::HObject &hObject, HalconCpp::HObject &hRegion, double &avgResult, double &stdResult);
|
|
//8. ͼÏñÖ±·½Í¼Í³¼Æ
|
static void GetHistogram(HalconCpp::HObject &hObject, HalconCpp::HObject &hRegion, int sz, int *aryHist);
|
|
//9. ¶ÔÏó×éºÏ
|
static void ObjectConcat(HalconCpp::HObject &hObject1, HalconCpp::HObject &hObject2, HalconCpp::HObject &hTarget);
|
|
//10. ½ØÈ¡ÇøÓò
|
static void ReduceDomain(HalconCpp::HObject &hObject, HalconCpp::HObject &hRegion, HalconCpp::HObject &hTarget);
|
|
//11. ½ØÈ¡Í¼Ïñ
|
static void CropDomain(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget);
|
|
//12. ÇøÓòת»»ÎªÍ¼Ïñ
|
static void RegionToBin(HalconCpp::HObject &hRegion, int width, int height, HalconCpp::HObject &hTarget);
|
|
//13. ´´½¨NCCÆ¥Åä¾ä±ú
|
static int CreateNccModel(HalconCpp::HObject &hObject, double angleStart, double angleEnd, double angleStep, int limitTime);
|
|
//14. ÊÍ·ÅÄ£°åID
|
static void ClearNccModel(int id);
|
|
//15. ²éÕÒÄ£°å
|
static void FindNccModel(HalconCpp::HObject &hObject, int idModel, double minScore, int numMatches, std::vector<ParaMatch> &vResult);
|
|
//16. ͼÏñÖÐÖµ
|
static void ImageMedian(HalconCpp::HObject &hObject, double radius, HalconCpp::HObject &hTarget);
|
|
//17. ͼÏñ²îÖµ
|
static void ImageSub(HalconCpp::HObject &hObject1, HalconCpp::HObject &hObject2, double mul, int gray, HalconCpp::HObject &hTarget);
|
|
//18. ͼÏñת»»
|
static void AffineTransImage(HalconCpp::HObject &hImage, ParaAffine2D affine, HalconCpp::HObject &hTarget);
|
|
//19. ͶӰֱ·½Í¼
|
static void ProjectHistogram(HalconCpp::HObject &hImage, int pLeft, int pTop, int pRight, int pBottom, double *aryHor, double *aryVer);
|
|
//20. ͼÏñµÄ³Ë·¨
|
static void ImageMul(HalconCpp::HObject &hObject, double mul, HalconCpp::HObject &hTarget);
|
|
//21. ¶ÔÏóÊýÁ¿
|
static int ObjectNumber(HalconCpp::HObject &hObject);
|
|
//22. »ñȡͼÏñ´óС
|
static void GetImageSize(HalconCpp::HObject &hObject, int &width, int &height);
|
|
//23. ¶ÁȡͼÏñ
|
static void ReadImage(HalconCpp::HObject &hObject, std::string &fileName);
|
|
//24. »ñÈ¡ÏñËØ
|
static bool GetImagePixel(HalconCpp::HObject &hObject, Point2D pt, int &bResult, int &gResult, int &rResult);
|
|
//25. ͼÏñÇøÓò·Ö¸î
|
static void ImageThreshold(HalconCpp::HObject &hObject, HalconCpp::HObject &hRegion, int minThreshold, int maxThreshold);
|
|
//26. ucharת»»ÎªÍ¼Ïñ
|
static void DataToObject(uchar *data, int width, int height, HalconCpp::HObject &hObject);
|
|
//27. ͼÏñ·Å´ó
|
static void ZoomImageFactor(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget, double xRate, double yRate);
|
|
//28. ͼÏñ·Å´ó
|
static void ZoomImageSize(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget, int width, int hegiht);
|
|
//29. ´´½¨ShapeÄ£°å
|
static int CreateShapeModel(HalconCpp::HObject &hObject, double angleStart, double angleEnd, double angleStep, int minContrast, int minCostTime);
|
|
//30. ÊÍ·ÅShape
|
static void ClearShapeModel(int id);
|
|
//31. ²éÕÒShapeÄ£°å
|
static void FindShapeModel(HalconCpp::HObject &hObject, int idModel, double minScore, int numMatches, std::vector<ParaMatch> &vResult);
|
|
//32. ÇåÀíËùÓÐNCCÄ£°å
|
static void ClearAllNccModel();
|
|
//33. ÇåÀíËùÓеÄShapeÄ£°å
|
static void ClearAllShapeModel();
|
|
//34. »ñÈ¡ÇøÓò
|
static void GetDomain(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget);
|
|
//35. Shape¶¨Î»ÂÖÀª
|
static void GetShapeContour(HalconCpp::HObject &hContour, int id);
|
|
//36. ÂÖÀª×ª»¯
|
static void AffineTransContour(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget, ParaAffine2D affine);
|
|
//37. ͼÏñ»Ò¶È»¯
|
static void ImageToGray(HalconCpp::HObject &hObject, int iGray, HalconCpp::HObject &hTarget);
|
|
//38. ¾Ö²¿ÔöÇ¿
|
static void ImageEmphasize(HalconCpp::HObject &hObject, int maskWidth, int maskHeight, double rate, HalconCpp::HObject &hTarget);
|
|
//39. ´´½¨Í¼Ïñ
|
static void GenImageConst(HalconCpp::HObject &hImage, int width, int height, int gray);
|
|
//40. ´óÂÉ·¨
|
static int Otsu(int *aryData, int sz);
|
|
//41. ½ØÈ¡ROIÇøÓòµÄͼÏñ²¢¾ÀÕý
|
static void GetAndAdjustRectImage(HalconCpp::HObject &hObject, HalconCpp::HObject &hRegion, int modeAngle, HalconCpp::HObject &hTarget);
|
|
//42. ½ØÈ¡ROIÇøÓòµÄͼÏñ²¢¾ÀÕý
|
static void GetAndAdjustRectImage(HalconCpp::HObject &hObject, double cx, double cy, double angle, int width, int height, HalconCpp::HObject &hTarget);
|
|
//43. ´´½¨Í¼Ïñ
|
static void GenImage(const unsigned char* data, HalconCpp::HObject &hImage, int imgType, int width, int height);
|
|
//44. ´´½¨ÍÖÔ²ÇøÓò
|
static void GenEllipse(HalconCpp::HObject &hRegion, double x, double y, double angle, double length1, double length2);
|
|
//45. ͼÏñÑ¡Ôñ
|
static void ImageRotate(HalconCpp::HObject &hObject, int angle, HalconCpp::HObject &hTarget);
|
|
//46. ½ØÍ¼Í¼Ïñ
|
static void ImageDraw(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget, int left, int top, int width, int height);
|
|
//47. ½ØÍ¼´ø½Ç¶ÈͼÏñ
|
static void GetAngleImage(HalconCpp::HObject &hObject, HalconCpp::HObject &hTarget, Point2D center, double angle, int width, int height);
|
|
public:
|
//1. ÇøÓòÊÇ·ñ´æÔÚ
|
static bool RegionExist(HalconCpp::HObject &hRegion);
|
|
//2. ÇøÓòºÏ²¢
|
static void RegionUnion2(HalconCpp::HObject &hRegion1, HalconCpp::HObject &hRegion2, HalconCpp::HObject &hTarget);
|
|
//3. ÇøÓò²îÖµ
|
static void RegionDiffer(HalconCpp::HObject &hRegion1, HalconCpp::HObject &hRegion2, HalconCpp::HObject &hTarget);
|
|
//4. ÇøÓò½»¼¯
|
static void RegionIntersection(HalconCpp::HObject &hRegion1, HalconCpp::HObject &hRegion2, HalconCpp::HObject &hTarget);
|
|
//5. ÇøÓòÁ¬Í¨
|
static void RegionConnect(HalconCpp::HObject &hRegion, HalconCpp::HObject &hTarget);
|
|
//6. ÇøÓò±ÕÔËËã
|
static void RegionClosing(HalconCpp::HObject &hRegion, double radius, HalconCpp::HObject &hTarget);
|
|
//7. ÇøÓò¿ªÔËËã
|
static void RegionOpening(HalconCpp::HObject &hRegion, double radius, HalconCpp::HObject &hTarget);
|
|
//8. ÇøÓò¸¯Ê´
|
static void RegionErosion(HalconCpp::HObject &hRegion, double radius, HalconCpp::HObject &hTarget);
|
|
//9. ÇøÓòÅòÕÍ
|
static void RegionDilation(HalconCpp::HObject &hRegion, double radius, HalconCpp::HObject &hTarget);
|
|
//10. ÇøÓòºÏ²¢
|
static void RegionUnion(HalconCpp::HObject &hRegion, HalconCpp::HObject &hTarget);
|
|
//11. ÇøÓòת»»
|
static void AffineTransRegion(HalconCpp::HObject &hRegion, ParaAffine2D affine, HalconCpp::HObject &hTarget);
|
|
//12. ÅжϵãÔÚÇøÓòÀïÃæ
|
static bool JudgeInRegion(Point2D pt, HalconCpp::HObject &hRegion);
|
|
//13. ÇøÓòÖÐÐÄ
|
static void AreaCenter(HalconCpp::HObject &hRegion, int &area, double &x, double &y);
|
|
//14. Ãæ»ýÈüÑ¡
|
static void SelectShape(HalconCpp::HObject &hRegion, std::string strMode, double minValue, double maxValue, HalconCpp::HObject &hTarget);
|
|
//15. ×î´óÇøÓò
|
static void MaxRegion(HalconCpp::HObject &hRegion, HalconCpp::HObject &hTarget);
|
|
//16. ×îСÍâ½ÓÔ²
|
static void SmallestCircle(HalconCpp::HObject &hRegion, double &x, double &y, double &radius);
|
|
//17. ×îСÍâ½Ó¾ØÐÎ
|
static void SmallestRectangle(HalconCpp::HObject &hRegion, double &x1, double &y1, double &x2, double &y2);
|
|
//18. ÇøÓò×îСÍâ½ç¾ØÐÎ
|
static void SmallestRectangle2(HalconCpp::HObject &hRegion, double &x, double &y, double &angle, double &xa, double &xb);
|
|
//19. ´´½¨¾ØÐÎ2
|
static void GenRectangle2(HalconCpp::HObject &hTarget, double x, double y, double angle, double xa, double xb);
|
|
//20. ´´½¨Ô²
|
static void GenCircle(HalconCpp::HObject &hObject, double x, double y, double radius);
|
|
//21. ´´½¨Ö±ÏßÇøÓò
|
static void GenRegionLine(HalconCpp::HObject &hRegion, double x1, double y1, double x2, double y2);
|
|
//22. ²úÉú¾ØÐÎ
|
static void GenRectangle1(HalconCpp::HObject &hTarget, double x1, double y1, double x2, double y2);
|
|
//23.²úÉú¶à±ßÐÐÇøÓò
|
static void GenRegionPolygonFilled(HalconCpp::HObject &hTarget, Point2D *ptArray, int sz);
|
|
//24. ²úÉúÊ®×Ö
|
static void GenCrossObject(HalconCpp::HObject &hObject, Point2D pt, double sz, double angle);
|
|
//25. ²úÉúÇøÓòÂÖÀª
|
static void GenContourRegion(HalconCpp::HObject &hRegion, std::string strMode, HalconCpp::HObject &hTarget);
|
|
//26. Ñ¡Ôñ¶ÔÏó
|
static void SelectObject(HalconCpp::HObject &hObject, HalconCpp::HObject &hSelected, int idx);
|
|
//27. ÇøÓòÌî³ä
|
static void FillUp(HalconCpp::HObject &hRegion, HalconCpp::HObject &hTarget);
|
|
//28. ´´½¨¾ØÐÎ1
|
static void GenRectangle1(HalconCpp::HObject &hTarget, std::vector<double> vX1, std::vector<double> vY1, std::vector<double> vX2, std::vector<double> vY2);
|
|
//29. ´´½¨¾ØÐÎ2
|
static void GenRectangle2(HalconCpp::HObject &hTarget, std::vector<double> vX, std::vector<double> vY, std::vector<double> vAngle, std::vector<double> vLength1, std::vector<double> vLength2);
|
|
//30. ´´½¨Ô²
|
static void GenCircle(HalconCpp::HObject &hTarget, std::vector<double> vX, std::vector<double> vY, std::vector<double> vRadius);
|
|
//31. »ñȡֱ·½Í¼ÇøÓò
|
static void GenDispZft(HalconCpp::HObject &hImage, int dispWidth, int dispHeight, HalconCpp::HObject &hZftObject);
|
|
//32. ÇøÓòÅòÕÍ
|
static void RegionDilationRectangle(HalconCpp::HObject &hRegion, HalconCpp::HObject &hTarget, int width, int height);
|
|
//33. ²úÉúÇøÓò
|
static void GenRegionPoints(HalconCpp::HObject &hRegion, std::vector<Point2I> vPoints);
|
|
public:
|
//1. ÏÔʾģʽ
|
static void SetDraw(int id, std::string strMode);
|
|
//2. ÏÔʾλÖÃ
|
static void SetTposition(int id, int left, int top);
|
|
//3. ÏÔʾÑÕÉ«
|
static void SetColor(int id, std::string strColor);
|
|
//4. дÎÄ×Ö
|
static void WriteString(int id, std::string str);
|
|
//5. ÉèÖÃ×ÖÌå
|
static void SetFont(int id, int sz);
|
|
//6. ÏÔʾ×Ö·û
|
static void DispMessage(int id, std::string str, int xPos, int yPos, std::string strColor, std::string strBox);
|
|
//7. ÑÕɫת»»
|
static std::string ToColor(int iColor);
|
|
//8. ÉèÖÃÑÕÉ«
|
static void SetRgb(int id, int red, int green, int blue);
|
|
//29. rgbת»»ÎªÑÕÉ«
|
static std::string Rgb2Color(int r, int g, int b);
|
|
public:
|
//1. ¼ì²âÅжÏ
|
static bool JudgeResult(double value, double fzMin, double fzMax);
|
|
//2. ÅÅÐò
|
static void SortArray(double *data, int sz, int iType);
|
|
//4. »ñÈ¡2¸öµãµÄÖеã
|
static Point2D GetPointCenter(Point2D pt1, Point2D pt2);
|
|
//7. ¸ñʽת»»
|
static Point2I PointToInt(Point2D pt);
|
|
//8. ¸ñʽת»»
|
static Point2D PointToDouble(Point2I pt);
|
|
//9. Êý¾ÝºÏ²¢, ¹«Ê½ = 10000 * int1 + int2, int1, int2, ²»ÔËÊ䳬¹ý10000
|
static int IntegerUnion(int int1, int int2);
|
|
//10. Êý¾Ý·Ö½â
|
static void IntegerDivide(int intInput, int &int1, int &int2);
|
|
//11. µã×ø±êºÏ²¢£¬ÓÃÓÚ²éÕÒ
|
static int PointToInteger(Point2I pt);
|
|
//12. ÕûÊýת»»Îª×ø±ê
|
static Point2I IntegerToPoint(int intIntput);
|
|
//13. ×Ö·û´®·Ö¸î
|
static int SplitString(std::string strInput, std::string strSeparator, std::vector<std::string> &vOutString);
|
|
//14. ÅжÏdoubleÊý¾ÝÊÇ·ñÎÞЧ
|
static bool IsNaN(double value);
|
|
//15 ¸ñʽ»¯×Ö·û´®
|
static std::string FormatString(const char *lpcszFormat, ...);
|
|
//16. ×Ö·û·Ö¸î
|
static int StringSplit(const std::string& strScr, const std::string& delim, std::vector<std::string>& strings);
|
static void StringTrim(std::string& s);
|
|
};
|
|
#endif
|