opencv用椭圆拟合二维点集:fitEllipse函数

#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
    
    
    Mat src=imread("/home/zdg/图片/OIP (3).jpeg");
    Mat src_gray,src_canny,dst;
    imshow("原图",src);

    //图像预处理
    cvtColor(src,src_gray,COLOR_RGB2GRAY);
    GaussianBlur(src_gray,dst,Size(5,5),10,10);
    threshold(dst,src_canny,248,100,4);
    imshow("canny检测",src_canny);

    //寻找轮廓
    vector<vector<Point>> contours;
    vector<Vec4i> hierarcy;
    findContours(src_canny, contours, hierarcy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);//寻找轮廓

    //寻找最小包围椭圆
    vector<RotatedRect>box(contours.size());
    for(int i=0;i<contours.size();i++)
    {
    
    
     box[i] = fitEllipse(contours[i]);
    //绘制轮廓
     ellipse(src, box[i], Scalar(0,0,255), 2);
     }
    imshow("效果图",src);
    waitKey(0);

    return 0;
}

效果图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/seniorc/article/details/112364517