【发布时间】:2015-09-30 15:46:34
【问题描述】:
我想将一个简单的Mat (200x200) 划分为不同的区域(10x10)。
我创建了 2 个循环,然后创建了一个 Rect,我在其中指出了我在每次迭代中想要的变量 (x, y, width, height)。最后,我将图像的这个区域保存在Mats 的vector 中。
但是我的代码有问题:
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 的大小。它随着每列的迭代次数而增加。
我该如何解决这个问题?
【问题讨论】:
-
你只需要更正:
Rect region = Rect(x, y, width, heigth); -
嘘!!!可怕的错误!我想这很明显......非常感谢您的帮助!
-
很高兴它有帮助。我刚刚发布了一个详细的答案。
-
与您的问题并不真正相关,但是:由于宽度和高度是整数,而 face.cols 和 face.rows 是整数,将宽度计算为 face.cols / 20 会不会更好,就这样它都在同一个域(整数)中,而不是用浮点数(或双精度数)做数学?
-
@Octopus 因为你要转换为整数,所以结果是一样的,但你是绝对正确的。