#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;
}
效果图: