Circle cercleCirconscrit(std::vector<cv::Point> contour,int precision) {
bool br;
Circle res = Circle(0, Point(-1, -1));
double minRadius = 9999999999;
for (int i = 0; i < contour.size(); i += precision) {
cout << "i=" << i+1<<"/"<< contour.size()<<endl;
for (int j = 0; j < contour.size(); j+= precision) {
if (i != j) {
for (int k = 0; k < contour.size(); k+= precision) {
if (k != i && k != j) {
br = false;
Circle c(contour[i], contour[j], contour[k]);
//vérif si tous les points du contour sont dans le cercle
Point P = c.getCenter();
double R = c.getRadius();
for (int l = 0; l < contour.size(); l += precision) {
if (distanceP(P, contour[l]) > R)
{
br=true;
break;
}
}
if (!br && R<minRadius) {
res = c;
minRadius = R;
}
}
}
}
}
}
return res;
}
Circle cercleCirconscrit(std::vector<cv::Point> contour,int precision) {
bool br;
Circle res = Circle(0, Point(-1, -1));
double minRadius = 9999999999;
for (int i = 0; i < contour.size(); i += precision) {
cout << "i=" << i+1<<"/"<< contour.size()<<endl;
for (int j = i+1; j < contour.size(); j+= precision) {
for (int k = j+1; k < contour.size(); k+= precision) {
br = false;
Circle c(contour[i], contour[j], contour[k]);
//vérif si tous les points du contour sont dans le cercle
Point P = c.getCenter();
double R = c.getRadius();
for (int l = 0; l < contour.size(); l += precision) {
if (distanceP(P, contour[l]) > R)
{
br=true;
break;
}
}
if (!br && R<minRadius) {
res = c;
minRadius = R;
}
}
}
}
return res;
}Circle cercleCirconscrit(std::vector<cv::Point> contour,int precision) {
bool br;
Circle res = Circle(0, Point(-1, -1));
double minRadius = 9999999999;
for (int i = 0; i < contour.size(); i += precision) {
cout << "i=" << i+1<<"/"<< contour.size()<<endl;
for (int j = i+1; j < contour.size(); j+= precision) {
for (int k = j+1; k < contour.size(); k+= precision) {
br = false;
Circle c(contour[i], contour[j], contour[k]);
//vérif si tous les points du contour sont dans le cercle
Point P = c.getCenter();
double R = c.getRadius();
if R < minRadius {
for (int l = 0; l < contour.size(); l += precision) {
if (distanceP(P, contour[l]) > R)
{
br=true;
break;
}
}
if (!br) {
res = c;
minRadius = R;
}
}
}
}
return res;
}Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 28 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :