1

我刚刚开始学习 OpenCV,我想问一下如何在循环中使用 cvSetImageROI。问题是,我想将图像分成 9 个相等的区域并检查每个区域的线条或曲线。但是,我不知道如何在循环中使用 cvSetImageROI 以便它会自动转到下一个区域。

cvSetImageROI(image, one);

这是用于获取区域的函数。这里,“image”是该区域应该来自的图像,“one”是要实现的特定区域的矩形区域。如果我想检查图像的所有 9 个区域,我怎么可能从一个矩形区域移动到另一个区域?

非常感谢!

4

1 回答 1

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);
   }

你遍历每个区域。希望这会有所帮助,代码尚未经过测试。

于 2011-11-21T15:22:35.960 回答