Opencv cvSetImageROI координатная проблема - PullRequest
0 голосов
/ 22 марта 2012

в моем приложении я использовал opencv, чтобы обрезать изображение с определенной координатой, но проблема заключалась в том, что когда я перемещал координаты левой стороны, это было изменением вверх, поэтому я не понял.

//assignment of calculates ration between view resolution and resolution of the photograph
double scaleX = (outPutImage.frame.size.width/newCoordRect.imgWidth);
double scaleY = (outPutImage.frame.size.height/newCoordRect.imgHeight);

//assignment of the values after calculates coordinates
int x = newCoordRect.leftUp.x/(scaleX);
int y = newCoordRect.leftUp.y/(scaleY);

int heigth = ((newCoordRect.rightDown.y-newCoordRect.rightUp.y)/scaleY);
int width = ((newCoordRect.rightDown.x-newCoordRect.leftUp.x)/scaleX);

/* load image */
IplImage *img1 = [[ShareFunction sFunction]CreateIplImageFromUIImage:outPutImage.image];

/* sets the Region of Interest
 Note that the rectangle area has to be __INSIDE__ the image */
cvSetImageROI(img1, cvRect(x, y, width, heigth));

/* create destination image
 Note that cvGetSize will return the width and the height of ROI */
IplImage *img2 = cvCreateImage(cvGetSize(img1),
                               img1->depth,
                               3);

/* copy subimage */
cvCopy(img1, img2, NULL);

/* always reset the Region of Interest */
cvResetImageROI(img1);

retCropImg = [[ShareFunction sFunction]UIImageFromIplImage:img2];

есть идеи?

1 Ответ

0 голосов
/ 22 марта 2012

Ваш код кажется правильным. Посмотрите на ориентацию изображения

...