Paramètres pour le Savant et approxPolyDP dans le polygone de détection

Je suis un nouveau dans OpenCV. Je sais qu'il existe beaucoup de façons pour détecter les contours des polygones. Mais est la façon qui me donne une solution quand j'ai essayer de détecter les contours de polygones que j'ai dessiné?.

P. S. Désolé pour mon anglais...

Mon code:

Mat src = imread("C:/Users/Nickolay/Desktop/1.jpg");
resize(src, src, Size(400, 400), 0, 0, INTER_CUBIC);
if (src.empty()) 
{
cout << "Cannot load image!" << endl;
return -1;
}
//================================
Mat gray;
cvtColor(src, gray, CV_BGR2GRAY);
Mat bw;
Canny(gray, bw, 800, 850, 5, true);
imshow("canny", bw);
vector<vector<Point>> countours;
findContours(bw.clone(), countours, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
vector<Point> approx;
Mat dst = src.clone();
for(int i = 0; i < countours.size(); i++)
{
approxPolyDP(Mat(countours[i]), approx, arcLength(Mat(countours[i]), true) * 0.01, true);
if (approx.size() >= 4 && (approx.size() <= 6))
{
int vtc = approx.size();
vector<double> cos;
for(int j = 2; j < vtc + 1; j++)
cos.push_back(Angle(approx[j%vtc], approx[j-2], approx[j-1]));
sort(cos.begin(), cos.end());
double mincos = cos.front();
double maxcos = cos.back();
if (vtc == 4)//&& mincos >= -0.5 && maxcos <= 0.5)
{
Rect r = boundingRect(countours[i]);
double ratio = abs(1 - (double)r.width / r.height);
line(dst, approx.at(0), approx.at(1), cvScalar(0,0,255),4);
line(dst, approx.at(1), approx.at(2), cvScalar(0,0,255),4);
line(dst, approx.at(2), approx.at(3), cvScalar(0,0,255),4);
line(dst, approx.at(3), approx.at(0), cvScalar(0,0,255),4);
SetLabel(dst, "RECT", countours[i]);
}
}
}
//================================
imshow("source", src);
imshow("detected lines", dst);
waitKey(0);
return 0;`

Paramètres pour le Savant et approxPolyDP dans le polygone de détection

Ma question est comment faire pour détecter les contours de polygones que j'ai dessiné en utilisant opencv?Dans les photos ci-joint, j'ai utilisé les fonctions d'opencv, mais au lieu de 5 attendu rectangles j'ai eu seulement 3.

Je ne comprends pas ce que votre question est. Et, habituellement, il n'est pas anglais, mais la façon dont vous pensez à votre problème. Il suffit de regarder votre question et de penser comment vous résoudre la question de savoir si vous êtes une personne de répondre.
Ma question est comment faire pour détecter les contours de polygones que j'ai dessiné en utilisant opencv?
Dans les photos ci-joint, j'ai utilisé les fonctions d'opencv, mais au lieu de 5 attendu rectangles j'ai eu seulement 3.
Que sont les "Angle" et "SetLable" dans votre code? Ils sont présentés comme ne peut pas être identifié

OriginalL'auteur Rougher | 2014-04-08