|
|
|
|
@ -731,32 +731,37 @@ void ImageCompareModel::train(const vector<Mat>& 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<mCircle> 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<mCircle> 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]);
|
|
|
|
|
|
|
|
|
|
|