Ho bisogno di risolvere un problema quando sto rilevando rettangoli con angoli arrotondati usando opencv. Fondamentalmente sto usando lo stesso squares.c codice di esempio:Rileva punto d'angolo da rettangolo con angoli arrotondati
cvFindContours(gray, storage, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
while(contours)
{
double area=fabs(cvContourArea(contours, CV_WHOLE_SEQ));
if(area < minimum_area || area > maximum_area) {
contours = contours->h_next;
continue;
}
result = cvApproxPoly(contours, sizeof(CvContour), storage,
CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.05, 0);
if(result->total == 4 &&
fabs(cvContourArea(result,CV_WHOLE_SEQ)) > 1000 &&
cvCheckContourConvexity(result))
{
Con questo codice solito riesco a rilevare l'immagine, ma ho bisogno di regolare la prospettiva dell'immagine e per questo ho bisogno di rilevare i angoli dell'immagine , come fare questo e l'immagine ha gli angoli arrotondati? Il problema si verifica perché il punto che non ho bisogno di rilevare tra i punti, ad esempio, ho creato l'immagine seguente, dove le linee nere rappresentano i punti rilevati dal codice esistente e quelli blu che ho bisogno?
Grazie di per qualsiasi aiuto.
Con "Ho bisogno di risolvere un problema" intendi "Voglio una funzione OpenCV pronta che risolva il mio problema"? Il tuo problema è risolto da semplici ordinamenti intelligenti dei punti neri. Da lì costruisci i quattro angoli blu. – mmgp
@mmgp che ordina punti neri? Ma i punti neri non contengono punti blu! – Ricardo
Ho trovato la soluzione qui: http://stackoverflow.com/questions/22519545/automatic-perspective-correction-opencv – delkant