栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

OPENCV学习DAY8

Python 更新时间:发布时间: 百科书网 趣学号
Canny边缘检测 1、基本步骤

1)图像降噪。一般使用高斯滤波器,以平滑图像,滤除噪声。
高斯滤波器的模板系数,随着距离模板中心的增大而系数减小。
高斯滤波器相比于均值滤波器对图像个模糊程度较小

#高斯模糊的卷积核里的数值是高斯分布,相当于更重视中间的
aussian = cv2.GaussianBlur(noiseimage, (5, 5), 1 )

2)计算图像梯度。计算图像中每个像素点的梯度强度和大小。
因为梯度是灰度变化明显的地方,而边缘也是灰度变化明显的地方,所以计算图像梯度能够初步得到图像的边缘

3)非极大值抑制。应用非极大值抑制,以消除边缘检测带来的杂散效应。
非极大值抑制,简称为NMS算法。其思想是搜素局部最大值,抑制非极大值。目标检测的过程中在同一目标的位置上会产生大量的候选框,这些候选框相互之间可能会有重叠,此时我们需要利用非极大值抑制找到最佳的目标边界框,消除冗余的边界框

4)阈值筛选。应用双阈值检测来确定真实的和潜在的边缘,通过抑制孤立的弱边缘最终完成边缘检测
定义了两个参数,minval和maxval。
小于minval可认为不是边界,舍弃。
大于maxval则处理为边界。
大于minval,小于maxval,与边界相连就保留,否则舍弃。

使用opencv自带函数的运行代码:

import cv2
import numpy as np
img = cv2.imread('image1.png',cv2.IMREAD_GRAYSCALE )
v1 = cv2.Canny(img, 80, 150)
v2 = cv2.Canny(img, 50, 100)
cv2.imshow('init',img)
cv2.imshow('v1', v1)
cv2.imshow('v2', v2)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果显示

使用不同的minval和maxval双阈值,能够得到不同的边缘效果。

自定义Canny边缘检测

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1033921.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号