|
|
|
@ -70,10 +70,17 @@ cv::Mat ImageProcess::findCircle(const Mat &srcImg, Point2f& center, double &rad
|
|
|
|
int nIndex = -1;
|
|
|
|
int nIndex = -1;
|
|
|
|
float centerX = 0;
|
|
|
|
float centerX = 0;
|
|
|
|
float centerY = 0;
|
|
|
|
float centerY = 0;
|
|
|
|
|
|
|
|
double tmpmaxR = 0;
|
|
|
|
for (int i = 0; i < EDCircle.size(); i++)
|
|
|
|
for (int i = 0; i < EDCircle.size(); i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int startX = EDCircle[i].center.x - EDCircle[i].r;
|
|
|
|
int startX = EDCircle[i].center.x - EDCircle[i].r;
|
|
|
|
int startY = EDCircle[i].center.y - EDCircle[i].r;
|
|
|
|
int startY = EDCircle[i].center.y - EDCircle[i].r;
|
|
|
|
|
|
|
|
if (EDCircle[i].r > tmpmaxR)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
centerX = EDCircle[i].center.x * REAIZE;
|
|
|
|
|
|
|
|
centerY = EDCircle[i].center.y * REAIZE;
|
|
|
|
|
|
|
|
tmpmaxR = EDCircle[i].r;
|
|
|
|
|
|
|
|
}
|
|
|
|
if (startX < 0 || startY < 0)
|
|
|
|
if (startX < 0 || startY < 0)
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
if (EDCircle[i].center.x + EDCircle[i].r > bBaseX || EDCircle[i].center.y + EDCircle[i].r > bBaseY)
|
|
|
|
if (EDCircle[i].center.x + EDCircle[i].r > bBaseX || EDCircle[i].center.y + EDCircle[i].r > bBaseY)
|
|
|
|
@ -204,10 +211,18 @@ cv::Mat ImageProcess::findCircleByBackground(const Mat &srcImg, const Mat& backg
|
|
|
|
int nIndex = -1;
|
|
|
|
int nIndex = -1;
|
|
|
|
float centerX = 0;
|
|
|
|
float centerX = 0;
|
|
|
|
float centerY = 0;
|
|
|
|
float centerY = 0;
|
|
|
|
|
|
|
|
double tmpmaxR = 0;
|
|
|
|
for (int i = 0; i < EDCircle.size(); i++)
|
|
|
|
for (int i = 0; i < EDCircle.size(); i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int startX = EDCircle[i].center.x - EDCircle[i].r;
|
|
|
|
int startX = EDCircle[i].center.x - EDCircle[i].r;
|
|
|
|
int startY = EDCircle[i].center.y - EDCircle[i].r;
|
|
|
|
int startY = EDCircle[i].center.y - EDCircle[i].r;
|
|
|
|
|
|
|
|
if (EDCircle[i].r > tmpmaxR)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
centerX = EDCircle[i].center.x * REAIZE;
|
|
|
|
|
|
|
|
centerY = EDCircle[i].center.y * REAIZE;
|
|
|
|
|
|
|
|
tmpmaxR = EDCircle[i].r;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (startX < 0 || startY < 0)
|
|
|
|
if (startX < 0 || startY < 0)
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
if (EDCircle[i].center.x + EDCircle[i].r > bBaseX || EDCircle[i].center.y + EDCircle[i].r > bBaseY)
|
|
|
|
if (EDCircle[i].center.x + EDCircle[i].r > bBaseX || EDCircle[i].center.y + EDCircle[i].r > bBaseY)
|
|
|
|
|