分割出的多个矩形框,进行合并(重叠/相邻)
重叠把代码中的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);