我刚刚开始学习OpenCV,我想问一下如何在循环中使用cvSetImageROI。问题在于,我想将图像划分为9个相等的区域,并检查每个区域的线条或曲线。但是,我不知道如何在循环中使用cvSetImageROI,以便它会自动转到下一个区域。
cvSetImageROI(image, one);
这是用于获取区域的功能。这里,“图像”是区域应该来自的图像,“一”是要实现的特定区域的矩形区域。如果我想检查图像的所有9个区域,我怎么能从一个矩形区域移动到另一个矩形区域?
非常感谢!
答案 0 :(得分:1)
您可以做的是使用width_step = original_width / 3和height_step = original_height / 3将图像(宽度,高度)拆分为矩形。
然后用这样的循环:
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
CvRect rect;
rect.x = i * width_step;
rect.y = j * height_step;
if (i < 2)
rect.width = width_step;
else
rect.width = image.width - rect.x;
if (j < 2)
rect.height = height_step;
else
rect.height = image.height - rect.y;
cvSetImageROI(image, rect);
}
你越过每个地区。 希望这有帮助,代码尚未经过测试。