Мне нужно найти угловые точки изображения, чтобы я мог обрезать его в прямоугольной форме. Я уже нашел контур и использовал функцию approxpoly() на нем. Теперь как найти угловые координаты контура? Вот мой C код->Как найти угловые координаты контура изображения в Opencv и C
#include <cv.h>
#include <highgui.h>
int main(int argc, char** argv)
{
IplImage *img,*gray;
if((img = cvLoadImage("save.jpg", 1)) == NULL)
{
printf("A Img open error\n");
}
gray=cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
cvCvtColor(img,gray,CV_BGR2GRAY);
IplImage* out_median = cvCreateImage(cvGetSize(gray),IPL_DEPTH_8U,1);
cvSmooth(gray,out_median,CV_MEDIAN,3);
IplImage* out_threshold = cvCreateImage(cvGetSize(out_median), out_median->depth, 1);
cvThreshold(out_median,out_threshold,1,255,CV_THRESH_BINARY);
CvMemStorage* storage = cvCreateMemStorage();
CvSeq* first_contour = NULL;
cvFindContours(out_threshold,storage,&first_contour,sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
CvSeq* approx_polygon = NULL;
approx_polygon=cvApproxPoly(first_contour,sizeof(CvContour),storage,CV_POLY_APPROX_DP,0.01*cvArcLength(first_contour,CV_WHOLE_SEQ, 1),0);
//cvDrawContours(out_threshold,approx_polygon,cvScalarAll(255),cvScalarAll(255),100);
//cvShowImage("Contours", out_threshold);
//cvSaveImage("save_approxpoly_contour.jpg",out_threshold);
cvWaitKey(0);
return 0;
}
Это мое контурное изображение после применения Approxpoly()
Если у вас уже есть контуры, простая математика известково бы выявить точки угла. Сделайте простую итерацию по тем пунктам, которые у вас есть, ищите левые верхние, верхние правые, нижние левые и нижние правые точки. Для этого нет необходимости использовать дополнительную библиотеку. Это базовая математика, если я правильно понял вашу проблему. – karlphillip
Да, я знаю, о чем вы говорите, например, для поиска нижней правой правой части контура, продукт должен быть максимальным. Можете ли вы рассказать мне, какая функция даст мне очки, чтобы они могли перебирать их. Есть ли что-то вроде контура -> x/y или что-то в этом роде, чтобы получить очки. –
http://tech.dir.groups.yahoo.com/group/OpenCV/message/51631 –