OpenCV 多边形逼近

approxPolyDP(contours, Curve, epsilon, true);

 InputArray contours:输入的点集;
OutputArray Curve:输出的点集,当前点集是能最小包容指定点集的。画出来即是一个多边形;
double epsilon:指定的精度,也即是原始曲线与近似曲线之间的最大距离;
bool closed:若为true,则说明近似曲线是闭合的,反之,若为false,则断开。

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

void main()
{
    Mat img = imread("E:/1.jpg",0);
    imshow("img", img);
    Mat img_out(img.size(), CV_8UC3, Scalar::all(0));//纯黑图像
    threshold(img, img, 200, 255,THRESH_OTSU );
    vector<vector<Point>> contours;
    vector<Vec4i> hierarcy;
    findContours(img, contours, hierarcy, 0, CHAIN_APPROX_NONE);
    vector<vector<Point>> contours_poly(contours.size());//用于存放折线点集
    for (int i = 0; i < contours.size(); i++)
    {
        approxPolyDP(Mat(contours[i]), contours_poly[i],2, true);

        drawContours(img_out, contours_poly, i, Scalar(0, 255, 255), 2, 8);  //绘制
    }
    imshow("approx", img_out);
    waitKey(0);
}

 

转载于:https://www.cnblogs.com/hsy1941/p/11282229.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值