Я хочу разделить простое Mat
(200х200) в разных регионах (10х10).
Я делаю 2 петли, затем я создаю Rect
где я указываю переменные, которые я хочу в каждой итерации (x, y, width, height)
, Наконец, я сохраняю эту область изображения внутри vector
из Mat
s.
Но что-то не так с моим кодом:
Mat face = Mat(200, 200, CV_8UC1);
vector<Mat> regions;
Mat region_frame;
int width = face.cols * 0.05;
int heigth = face.rows * 0.05;
for(int y=0; y<=(face.rows - heigth); y+=heigth)
{
for(int x=0; x<=(face.cols - width); x+=width)
{
Rect region = Rect(x, y, x+width, y+heigth);
region_frame = face(region);
regions.push_back(region_frame);
}
}
Проблема только в заключительном шаге, это не работает с размером нового region_frame
Я пытаюсь создать. Он увеличивается с каждой итерацией числа столбцов.
Как я могу решить это?
OpenCV Rect может быть построен как:
Rect(int _x, int _y, int _width, int _height);
Поэтому вам нужно изменить строку в вашем коде следующим образом:
Rect region = Rect(x, y, width, heigth);
Кажется, вы вместо этого передали координаты верхнего левого и нижнего правого углов. Если вы хотите сделать это, используйте этот другой конструктор:
Rect(const Point& pt1, const Point& pt2);
и вы можете сделать как:
Rect region = Rect(Point(x, y), Point(x+width, y+heigth));
Других решений пока нет …