OpenCV的findContours查找图像连通域,并进行排序
vector<vector<Point> > allContoursAfterSort; //保存排序后的连通域
SortContourPoint(contours, allContoursAfterSort);
qDebug()<<"After sorted";
//对每条连通域上的各点根据y从小到大进行排序
void SortContourPoint(vector<vector<Point> > inputContours, vector<vector<Point> > &outputContours)
{
vector<Point> tempContoursPoint;
for(int i = 0; i < inputContours.size(); i++)
{
tempContoursPoint.clear(); //每次循环注意清空
for(int j = 0; j < inputContours[i].size(); j++)
{
for(int k = j; k < inputContours[i].size(); k++)
{
if( inputContours[i][j].y > inputContours[i][k].y)
{
swap(inputContours[i][j], inputContours[i][k]);
}
}
tempContoursPoint.push_back(inputContours[i][j]);
}
outputContours.push_back(tempContoursPoint);
}
}