在传统算法中,二值图像的轮廓提取是非常重要的图像处理方法,在opencv中也有相应的接口函数,在实际工程中,仅仅需要直接使用即可,本文不对具体的算法进行过多的阐述,直接上代码:
Mat maxContour(Mat src)
{
vector<vector<cv::Point>> contours;
Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC1); // 参数
findContours(src, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
double maxArea = 0;
int index = 0;
vector<cv::Point> maxContour;
for (size_t i = 0; i < contours.size(); i++)
{
double area = cv::contourArea(contours[i]);
if (area > maxArea)
{
maxArea = area;
maxContour = contours[i];
index = i;
}
}
drawContours(dst, contours, index, Scalar(255)); // 参数
return dst;
}
注:将图像保存到灰度图中,若需要彩色轮廓,则可进行相应的“参数”修改。