OpenCV обрезать изображение с эллипсом - PullRequest
3 голосов
/ 06 марта 2011

У меня есть изображение (cv :: Mat) размером 92x112 Я хочу окружить объект на этом изображении эллипсом, а затем получить только эти пиксели для создания другого изображения, содержащего только объект.

Я имею в виду, обрезка исходного изображения с помощью эллипса.Это возможно?

Я пытаюсь нарисовать эллипс, но эллипс не завершен, с этим:

ellipse(escalada, Point(92/2,112/2), Size(92/2*0.95,112/2*0.85), 0.0, 90.0, 0.0, Scalar(255,0,0), 3, 8);

и сделал несколько тестов с cvSetImageROI для обрезки изображенияно этот метод работает только с cvRect.

Какая-нибудь идея?

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Я решаю, используя это:

imagen = imread(nombre_imagen,0); //read image (grayscale)
//Use old C interface 
IplImage *res,*roi;
IplImage src(imagen);
res = cvCreateImage(Size(imagen.rows,imagen.cols),8,1);
roi = cvCreateImage(Size(imagen.rows,imagen.cols),8,1);
cvZero(roi);
cvEllipse(roi,cvPoint(src.width/2,src.height/2),cvSize(src.width/2*0.85,src.height/2*0.95),0.0,0.0,360.0,CV_RGB(255,255,255),-1,8,0);

cvAnd(&src, &src, res, roi);
cvReleaseImage(&roi);

, затем в переменной res у меня есть изображение, показывающее ROI с эллипсом, а остальные - черным.

3 голосов
/ 06 марта 2011

Нет прямой поддержки непрямоугольной области интереса.
Но вы можете использовать маску - см. http://docs.opencv.org/doc/tutorials/core/mat-mask-operations/mat-mask-operations.html (не круговая, но оригинальное руководство не существует)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...