opencv demo

w f48f622d58 添加项目 11 mesiacov pred
include f48f622d58 添加项目 11 mesiacov pred
src f48f622d58 添加项目 11 mesiacov pred
CMakeLists.txt f48f622d58 添加项目 11 mesiacov pred
README f48f622d58 添加项目 11 mesiacov pred
main.cpp f48f622d58 添加项目 11 mesiacov pred
test.jpg f48f622d58 添加项目 11 mesiacov pred
test2.jpg f48f622d58 添加项目 11 mesiacov pred
test3.jpg f48f622d58 添加项目 11 mesiacov pred
test4.jpg f48f622d58 添加项目 11 mesiacov pred

README

高斯模糊去噪:G(x,y) = (1/(2πσ²)) * e^(-(x²+y²)/(2σ²))
选择高斯核大小:通常使用奇数尺寸的核(如3*3, 5*5等)

计算高斯权重:根据σ值计算核中每个位置的权重

归一化权重:使所有权重之和为1

卷积运算:将高斯核与图像进行卷积

对于轻度噪声:σ=0.5-1.5,核大小3*3或5*5

对于较强噪声:σ=1.5-3.0,核大小5*5或7*7

Canny边缘检测:一种经典的图像边缘提取算法
使用Sobel算子计算图像的梯度:

水平梯度Gx = Sobel_x * 图像

垂直梯度Gy = Sobel_y * 图像

梯度幅度:G = √(Gx² + Gy²)

梯度方向:θ = arctan(Gy/Gx),量化到0°、45°、90°、135°四个方向

双阈值检测

设定高阈值(Thigh)和低阈值(Tlow),通常Tlow ≈ 0.4*Thigh

梯度值 > Thigh:强边缘像素

Tlow < 梯度值 ≤ Thigh:弱边缘像素

梯度值 ≤ Tlow:抑制

cv::findContours函数:OpenCV 中用于从二值图像中提取轮廓的函数,通常与边缘检测(如 Canny)或阈值处理的结果配合使用
输入参数:Canny函数的输出,mode 轮廓检索模式,method:轮廓近似方法
mode:轮廓检索模式
cv::RETR_EXTERNAL:只检测最外层轮廓
cv::RETR_LIST:检测所有轮廓,不建立层级关系
cv::RETR_CCOMP:检测所有轮廓,组织为两级层次结构
cv::RETR_TREE:检测所有轮廓,建立完整的层级树
method:轮廓近似方法
cv::CHAIN_APPROX_NONE:存储所有轮廓点
cv::CHAIN_APPROX_SIMPLE:压缩水平、垂直和对角线段,只保留端点
cv::CHAIN_APPROX_TC89_L1 或 cv::CHAIN_APPROX_TC89_KCOS:使用 Teh-Chin 链逼近算法
输出参数:contours:检测到的轮廓,每个轮廓存储为点向量