毕设之Opencv批量圆拟合

该程序使用OpenCV进行批量圆拟合,通过读取txt文档获取BMP图像路径及预设圆的参数。程序将图像转为灰度图,二值化后检测轮廓并找到最小圆。结果显示在txt文档中,对比实际圆心坐标和半径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

毕设之Opencv批量圆拟合

程序思路:编写read_csv()函数读取图片目录下txt文档,获取各BMP文件绝对路径以及对应圆的圆心坐标、半径参数。读取各BMP图像,转为灰度图,二值化后检测轮廓,然后检测最小圆;并将检测结果和实际结果存入txt文档。

不需调参;对于完美圆的检测优于霍夫圆变换。

功能小结:

1、read_csv()函数

void read_csv(string&csvPath, vector<String>&CirclePath, vector<int>&Circle_x, vector<int>&Circle_y, vector<int>&Circle_r)

csvPath:txt路径

CirclePath:从txt中读取的bmp路径

Circle_x:bmp图像中圆的圆心x坐标

Circle_y:bmp图像中圆的圆心y坐标

Circle_r:bmp图像中圆的半径r

2、创建txt文本,并写入数据

#include <iostream>

#include <sstream>

#include <fstream>

ofstream file("filepath",ios::out);

if (file.is_open())

{

    file <<;

}

file.close();

3、转化为灰度图

cvtColor(srcImage,midImage, COLOR_BGR2GRAY);//转化边缘检测后的图为灰度图

@paramsrc input image: 8-bit unsigned, 16-bit unsigned ( CV_16UC... ), orsingle-precision

floating-point.

@paramdst output image of the same size and depth as src.

@paramcode color space conversion code (see cv::ColorConversionCodes).

@paramdstCn number of channels in the destination image; if the parameter is 0, thenumber of the

channelsis derived automatically from src and code.

4、图像二值化Threshold()

函数 Threshold对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像。(cvCmpS也可以达到此目的)或者是去掉噪声,例如过滤很小或很大像素值的图像点。本函数支持的对图像取阈值的方法由 threshold_type确定。

CV_EXPORTS_W double threshold( InputArray src,OutputArray dst,

                               double thresh, double maxval, int type );

/**@brief Applies a fixed-level threshold to each array element.

 

Thefunction applies fixed-level thresholding to a single-channel array. Thefunction is typically

usedto get a bi-level (binary) image out of a grayscale image ( cv::compare couldbe also used for

thispurpose) or for removing a noise, that is, filtering out pixels with too smallor too large

values.There are several types of thresholding supported by the function. They aredetermined by

typeparameter.

 

Also,the special values cv::THRESH_OTSU or cv::THRESH_TRIANGLE may be combined withone of the

abovevalues. In these cases, the function determines the optimal threshold valueusing the Otsu's

orTriangle algorithm and uses it instead of the specified thresh . The functionreturns the

computedthreshold value. Currently, the Otsu's and Triangle methods are implementedonly for 8-bit

images.

 

@paramsrc input array (single-channel, 8-bit or 32-bit floating point).

@paramdst output array of the same size and type as src.

@paramthresh threshold value.

@parammaxval maximum value to use with the THRESH_BINARY and THRESH_BINARY_INVthresholding

types.

@paramtype thresholding type (see the cv::ThresholdTypes).

 

@sa  adaptiveThreshold, findContours, compare,min, max

 */

5、检索轮廓FindContours()

函数FindContours从二值图像中检索轮廓,并返回检测到的轮廓的个数。first_con

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值