У меня проблема с неработающим cvSetImageROI. Пожалуйста, помогите мне исправить проблему. У меня есть изображение (скажем, original_image для условности), которое я пытаюсь разделить на три равные части. Я назвал три получившихся прямоугольника прямоугольником1, прямоугольником2, прямоугольником3 для удобства. Поскольку мое изображение имеет форму прямоугольника, каждый полученный прямоугольник имеет 1/3 ширины original_image.
Моя идея для этого изображения: разделить ширину изображения на 3, чтобы результат был равен каждому ширины трех прямоугольников.
Хотя, когда я пытаюсь это сделать, мой setImageROI не работает.
Я размещаю здесь фрагмент кода для извлечения прямоугольника1. Пожалуйста, подскажите, где я ошибаюсь. Ее значения x и y являются значениями прямоугольника original_image.
int resultant_rectangle_width = ((int)(original_image->width/3));
int resultant_rectangle_height = (int)original_image->height;
cvSetImageROI(original_image, cvRect(x, y,resultant_rectangle_width,resultant_rectangle_height));
//this cout block was to check if the ROI was set on original_image,but it showed the original_image properties here.
cout<<"original_image width after setting roi:"<<original_image->width<<endl;
cout<<"original_image height after setting roi:"<<original_image->height<<endl;
//copying the ROI to another image
IplImage *rectangle1 = cvCreateImage(cvGetSize(original_image),original_image->depth,original_image->nChannels);
cvCopy(original_image, rectangle1);//using three arguments also did not help
cvResetImageROI(original_image);
cvShowImage("rectangle1", rectangle1);
Прямоугольник1, который я пытаюсь показать, показывает неправильное обрезанное изображение, то есть с неправильной высотой. Я не понимаю, где я изменяю высоту original_image, чтобы прямоугольник1 отображал неправильную высоту.
Я ожидаю, что код даст мне изображение той же высоты, что и исходное изображение, но с шириной 1/ 3-я часть исходного изображения.
cvCopy
не должно принимать три аргумента? - person Weather Vane   schedule 26.04.2015cvSetImageROI
использоватьcvRect(0,0, ...
для выбора левой части изображения, так как это верхний левый угол изображения? - person Weather Vane   schedule 26.04.2015cvRect(width/3, 0...)
и т. д. docs.opencv.org/2.4.9/modules/core/doc/ - person Weather Vane   schedule 26.04.2015