opencv 轮廓的外围多边形提取或者 删除最小最大轮廓
Posted rjjhyj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 轮廓的外围多边形提取或者 删除最小最大轮廓相关的知识,希望对你有一定的参考价值。
std::vector<cv::Point> resultpoly;
cv::approxPolyDP(contours[0], resultpoly,4, true);//轮廓contours[0] ,resultpoly多边形的点集
cv::polylines(src, resultpoly, true, 150, 1);//画多边形的外轮廓
cv::imshow("detected polyLines", src);//显示多边形的外轮廓
//相关链接https://www.cnblogs.com/donaldlee2008/p/5230032.html
// 移除过小或过大的轮廓
void getSizeContours(vector<vector<Point>> &contours)
int cmin = 100; // 最小轮廓长度
int cmax = 1000; // 最大轮廓长度
vector<vector<Point>>::iterator itc = contours.begin();
while(itc != contours.end())
if((itc->size()) < cmin || (itc->size()) > cmax)
itc = contours.erase(itc);
else ++ itc;
cv::approxPolyDP(contours[0], resultpoly,4, true);//轮廓contours[0] ,resultpoly多边形的点集
cv::polylines(src, resultpoly, true, 150, 1);//画多边形的外轮廓
cv::imshow("detected polyLines", src);//显示多边形的外轮廓
//相关链接https://www.cnblogs.com/donaldlee2008/p/5230032.html
// 移除过小或过大的轮廓
void getSizeContours(vector<vector<Point>> &contours)
int cmin = 100; // 最小轮廓长度
int cmax = 1000; // 最大轮廓长度
vector<vector<Point>>::iterator itc = contours.begin();
while(itc != contours.end())
if((itc->size()) < cmin || (itc->size()) > cmax)
itc = contours.erase(itc);
else ++ itc;
以上是关于opencv 轮廓的外围多边形提取或者 删除最小最大轮廓的主要内容,如果未能解决你的问题,请参考以下文章
opencv 5 图像轮廓与图像分割修复 2 使用多边形将轮廓包围
opencv 多边形近似物体形状 cv.approxPolyDP函数的应用