分割出的多个矩形框,进行合并(重叠/相邻)
重叠把代码中的20和5去掉即可,其中:20代表左右相邻距离20个像素,5代表上下相邻5个像素
应用范围发票字符检测。等
int num;
do
{
num = 0;
for (size_t i = 0; i < rects.size(); i++)
{
for (size_t j = 0; j < rects.size(); j++)
{
if (i != j&&rects[i].x + rects[i].width > rects[j].x-20 &&rects[j].x + rects[j].width+20 > rects[i].x &&
rects[i].y + rects[i].height > rects[j].y-5 &&rects[j].y + rects[j].height+5 > rects[i].y)
{
rects[i] = Rect(Point(min(rects[i].tl().x, rects[j].tl().x), min(rects[i].tl().y, rects[j].tl().y)), Point(max(rects[i].br().x, rects[j].br().x), max(rects[i].br().y, rects[j].br().y)));
rects.erase(rects.begin() + j);//删除
j--;
num++;
}
}
}
} while (num);
for (size_t i = 0; i < rects.size(); i++)
rectangle(dstImage, rects[i], Scalar(0, 0, 255),1);