循环中的cvSetImageROI

时间:2011-11-21 14:51:30

标签: opencv region roi

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

cvSetImageROI(image, one);

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

非常感谢!

1 个答案:

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

你越过每个地区。 希望这有帮助,代码尚未经过测试。