Opencv 循环中的cvSetImageROI
我刚刚开始学习OpenCV,我想问一下如何在循环中使用cvSetImageROI。问题是,我想将一幅图像分成9个相等的区域,并检查每个区域是否有直线或曲线。但是,我不知道如何在循环中使用cvSetImageROI,以便它自动转到下一个区域Opencv 循环中的cvSetImageROI,opencv,region,roi,Opencv,Region,Roi,我刚刚开始学习OpenCV,我想问一下如何在循环中使用cvSetImageROI。问题是,我想将一幅图像分成9个相等的区域,并检查每个区域是否有直线或曲线。但是,我不知道如何在循环中使用cvSetImageROI,以便它自动转到下一个区域 cvSetImageROI(image, one); 这是用于获取区域的函数。这里,“图像”是区域应该来自的图像,“一”是要实现的特定区域的矩形区域。如果我想检查图像的所有9个区域,如何从一个矩形区域移动到另一个矩形区域 多谢各位 您可以将图像(宽度、高度)
cvSetImageROI(image, one);
这是用于获取区域的函数。这里,“图像”是区域应该来自的图像,“一”是要实现的特定区域的矩形区域。如果我想检查图像的所有9个区域,如何从一个矩形区域移动到另一个矩形区域
多谢各位 您可以将图像(宽度、高度)拆分为矩形,其中宽度步长=原始宽度/3,高度步长=原始高度/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);
}
(i=0;i<3;i++)的
对于(j=0;j<3;j++)
{
CvRect-rect;
矩形x=i*width\u步长;
矩形y=j*高度×步距;
如果(i<2)
rect.width=宽度\步进;
其他的
rect.width=image.width-rect.x;
if(j<2)
rect.height=高度\步距;
其他的
rect.height=image.height-rect.y;
cvSetImageROI(图像,rect);
}
你检查每个区域。
希望这有帮助,代码还没有经过测试。您可以做的是将图像(宽度、高度)分割成矩形,宽度为原始宽度/3,高度为原始高度/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);
}
(i=0;i<3;i++)的
对于(j=0;j<3;j++)
{
CvRect-rect;
矩形x=i*width\u步长;
矩形y=j*高度×步距;
如果(i<2)
rect.width=宽度\步进;
其他的
rect.width=image.width-rect.x;
if(j<2)
rect.height=高度\步距;
其他的
rect.height=image.height-rect.y;
cvSetImageROI(图像,rect);
}
你检查每个区域。
希望这有帮助,代码还没有经过测试