利用opencv进行圆形标志提取和质心计算

本文介绍了一个利用opencv进行圆形标志检测和质心计算的项目实践。通过双边滤波保持边缘信息,Mean shift区域分割算法进行分割,Canny算子检测边缘,findContours函数提取轮廓并计算质心。
摘要由CSDN通过智能技术生成

利用opencv进行圆形标志提取和质心计算

最近跟着老师做项目,需要对图片中拍摄的圆形标志点进行检测和提取,查了一些资料和博客,记录一下过程。实际拍摄的图片如图所示:
含有圆形标志的图片
图片处理过程的大概思路是:
1、进行双边滤波处理(可以较好的保留圆形标志的边缘信息)

CV_EXPORTS_W void bilateralFilter( InputArray src, OutputArray dst, int d,
                                   double sigmaColor, double sigmaSpace,
                                   int borderType = BORDER_DEFAULT );

双边滤波处理效果
2、利用Mean shift区域分割算法分割圆形标志(分割次数可以根据图片具体情况而定)

CV_EXPORTS_W void pyrMeanShiftFiltering( InputArray src, OutputArray dst,
                                         double sp, double sr, int maxLevel = 1,
                                         TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5,1) );

分割的结果
double sp—滑动空间的窗口半径
double sr—颜色窗口半径
termcrit:迭代算法终止条件(可以选择迭代次数或者迭代精度作为终止条件)
在这里插入图片描述
3、将分割出圆形标志进行Canny算子边缘检测
Canny边缘检测结果
4、利用findContours函数获取轮廓信息并填充区域轮廓内部
findContours函数的定义:

CV_EXPORTS_W void findContours( InputArray image, OutputArrayOfArrays contours,
                              OutputArray hierarchy, int mode,
                              int method, Point offset = Point());
Mat draw00 = Mat(resultCanny.size(), CV_8UC3, Scalar(255, 255, 255));
		findContours(resultCanny, Contours, Hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));//轮廓
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值