diff --git a/src/ImageCompare/ImageCompareModel.cpp b/src/ImageCompare/ImageCompareModel.cpp index f3e6bd2..0f10068 100644 --- a/src/ImageCompare/ImageCompareModel.cpp +++ b/src/ImageCompare/ImageCompareModel.cpp @@ -731,32 +731,37 @@ void ImageCompareModel::train(const vector& vec) float startX = originalMatWidth / 2.0 - max_circle_radii;//找最大圆外径,固定直径 float startY = originalMatHeight / 2.0 - max_circle_radii; - Rect rect(startX, startY, max_circle_radii * 2, max_circle_radii * 2); + + if((startX+max_circle_radii*2)>=originalMat.cols || (startY+max_circle_radii*2)>originalMat.rows) + continue; + Rect rect(startX, startY, max_circle_radii * 2, max_circle_radii * 2); Mat origianlCenterMat; originalMat(rect).copyTo(origianlCenterMat); - EDCircles edCircles(origianlCenterMat); - std::vector circles = edCircles.getCircles(); - float rMax = 0; - float rMaxInside = 0; - const int circlesSize = circles.size(); - for (int j = 0; j < circlesSize; ++j) - { - double radius = circles[j].r; - if (radius > rMax) - { - rMax = radius; - } - } - for (int j = 0; j < circlesSize; ++j) - { - double radius = circles[j].r; - if (radius < rMax * MAX_INSIDE_RATIO && radius > rMax * MIN_INSIDE_RATIO) - { +// EDCircles edCircles(origianlCenterMat); +// std::vector circles = edCircles.getCircles(); +// float rMax = 0; +// float rMaxInside = 0; +// const int circlesSize = circles.size(); +// for (int j = 0; j < circlesSize; ++j) +// { +// double radius = circles[j].r; +// if (radius > rMax) +// { +// rMax = radius; +// } +// } +// for (int j = 0; j < circlesSize; ++j) +// { +// double radius = circles[j].r; +// if (radius < rMax * MAX_INSIDE_RATIO && radius > rMax * MIN_INSIDE_RATIO) +// { insideCircleNumSum++; - } - } +// } +// } + + centerMatVec.push_back(origianlCenterMat); tmpVec.push_back(vec[i]); diff --git a/src/algorithm/ImageProcess.cpp b/src/algorithm/ImageProcess.cpp index afafaab..215124d 100644 --- a/src/algorithm/ImageProcess.cpp +++ b/src/algorithm/ImageProcess.cpp @@ -132,7 +132,11 @@ Mat ImageProcess::DetectCircle(Mat srcImg, Mat background, Point2f& center, doub CircleDetector cd; cd.setAlgoType(CircleDetector::PeakCircle); - cd.setEdgeWidth(cParam.CircleEdgeWidth); + if (cParam.CircleEdgeWidth <= 0) + cd.setEdgeWidth(1); + else + cd.setEdgeWidth(cParam.CircleEdgeWidth); + if (cParam.CirclePolarity == 0) cd.setPolarity(Polarity::Black2White); else diff --git a/tpvs17/tpMain/lpMainWin.cpp b/tpvs17/tpMain/lpMainWin.cpp index 6c71567..d06d02c 100644 --- a/tpvs17/tpMain/lpMainWin.cpp +++ b/tpvs17/tpMain/lpMainWin.cpp @@ -22,9 +22,9 @@ #include "databasesql.h" #include "lpCryptokey.h" -#define VERSION_HUB "3.0.6.0" -#define VERSION_ALG "3.0.1.4" -#define UPDATE_TIME "2022-01-17" +#define VERSION_HUB "3.0.6.1" +#define VERSION_ALG "3.0.1.5" +#define UPDATE_TIME "2022-03-03" #pragma execution_character_set("utf-8") #define MODEL_UI_ICON_NONE ":/image/no-img"