我想在不同的区域(10x10)划分一个简单的Mat
(200x200)。
我创建了2个循环,然后创建了一个Rect
,我在每个迭代中指出了我想要的变量(x, y, width, height)
。最后,我将图片的这个区域保存在vector
Mat
内。
但我的代码有问题:
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
的大小。它随着每次迭代次数的cols而增加。
我该如何解决这个问题?
答案 0 :(得分:3)
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));