IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【OpenCV-Python】14.OpenCV的边缘检测 -> 正文阅读

[人工智能]【OpenCV-Python】14.OpenCV的边缘检测

14.OpenCV的边缘检测



前言

??图像的边缘是指图像中灰度值发生急剧变化的位置,边缘检测的目的是为了绘制出边缘线条。边缘通常是不连续的,不能表示整体。
??边缘检测结果通常为黑白图像,图像中的白色线条表示边缘。常见的边缘检测算法有Laplacian边缘检测、Sobel边缘检测和Canny边缘检测。


一、Laplacian边缘检测

??Laplacian(拉普拉斯)边缘检测使用图像矩阵与拉普拉斯核进行卷积运算,其本质是计算图像中任意一点与其在水平水平方向和垂直方向上4个相邻点平均值的差值。
??cv2.Laplacian()函数用于实现Laplacian边缘检测,常用的拉普拉斯核与基本格式如下:
请添加图片描述

dst = cv2.Laplacian(src, ddepth, [, ksize[, scale[, delat[, borderType]]]])

dst表示边缘检测结果图像
src表示原图像
ddepth为目标图像的深度
ksize为用于计算二阶导数滤波器的系数, 必须为正数且为奇数
scale为可选比例因子
delat为添加到边缘检测结果中的可选增量值
borderType为边界值类型
# Laplacian边缘检测
img = cv2.imread('bee.jpg')
cv2.imshow('bee', img)

Laplacian = cv2.Laplacian(img, cv2.CV_8U)
cv2.imshow('Laplacian', Laplacian)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述


二、Sobel边缘检测

??Sobel边缘检测将高斯滤波器和微分结合起来执行图像卷积运算,其结果具有一定的抗噪性。
??cv2.Sobel()函数用于实现Sobel边缘检测,基本格式如下:

dst = cv2.Sobel(src, depth, dx, dy[, ksize[, scale[, delat[, borderType]]]])

dst表示边缘检测结果图像
src表示原图像
depth为目标图像的深度
dx为导数x的阶数
dy为导数y的阶数
ksize为扩展的Sobel内核大小, 必须为1357
scale为计算导数的可选比例因子
delat为添加到边缘检测结果中的可选增量值
borderType为边界值类型
# Sobel边缘检测
img = cv2.imread('bee.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('bee', img)
 
Sobelx = cv2.Sobel(img, cv2.CV_8U, 1, 0, ksize=3) # 1, 0表示在x方向求一阶导数,最大可以求2阶导数
Sobely = cv2.Sobel(img, cv2.CV_8U, 0, 1, ksize=3) # 0, 1表示在y方向求一阶导数,最大可以求2阶导数

cv2.imshow('Sobelx', Sobelx)
cv2.imshow('Sobely', Sobely)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述


三、Canny边缘检测

??Laplacian边缘检测和Sobel边缘检测都是通过卷积运算来计算边缘,它们的算法比较简单,因此结果可能会损失过多的边缘信息或有很多的噪声。Canny边缘检测的算法较为复杂,它包含5个步骤:
(1) 使用高斯滤波除去图像噪声
(2) 使用Sobel核进行滤波,计算梯度
(3) 在边缘使用非最大值抑制
(4) 对检测出的边缘使用双阈值以去除假阳性
(5) 分析边缘之间的连续性,保留真正的边缘
??cv2.Canny()函数用于实现Sobel边缘检测,基本格式如下:

dst = cv2.Canny(src, threshold1, threshold2[, apertureSize[, L2gradient]])

dst表示边缘检测结果图像
src表示原图像
threshold1为第1阈值
threshold2为第2阈值
apertureSize为计算梯度时使用的Sobel核大小
L2gradient为标志

在这里插入图片描述

四、自动确定阈值的一种方法

img = cv2.imread('bee.jpg')
cv2.imshow('bee', img)

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('bee_gray', img_gray)

img_auto = cv2.GaussianBlur(img_gray,(3, 3), 0)

sigma = 0.33
v = np.median(img_auto)
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))
edge = cv2.Canny(img_auto, lower, upper)
edge = cv2.GaussianBlur(edge, (3, 3), 0)

cv2.imshow('canny_img', edge)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

五、图像梯度滤波器

??OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器: Sobel,Scharr 和 Laplacian。Sobel, Scharr 其实就是求一阶或二阶导数。 Scharr 是对 Sobel的优化。Laplacian 是求二阶导数。
??Sobel算子是高斯平滑加微分运算的联合运算,因此它更抗噪声。逆可以指定要采用的导数方向, 垂直或水平(分别通过参数yorder和xorder)。还可以通过参数ksize指定内核的大小。

# Scharr边缘检测
img = cv2.imread('bee.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('bee', img)
 
Scharrx = cv2.Scharr(img, cv2.CV_8U, 1, 0, -1)
Scharry = cv2.Scharr(img, cv2.CV_8U, 0, 1, -1)

cv2.imshow('Scharrx', Scharrx)
cv2.imshow('Scharry', Scharry)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述


六、OpenCV-Python资源下载

OpenCV-Python测试用图片、中文官方文档、opencv-4.5.4源码


总结

??以上内容介绍了OpenCV-Python的边缘检测操作,有关Python、数据科学、人工智能等文章后续会不定期发布,请大家多多关注,一键三连哟(●’?’●)。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:40:43  更:2021-12-16 17:41:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/29 12:29:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码