016 OpenCV Laplacian边缘检测

目录

一、环境

二、拉普拉斯原理

三、完整代码


一、环境

本文使用环境为:

  • Windows10
  • Python 3.9.17
  • opencv-python 4.8.0.74

二、拉普拉斯原理

拉普拉斯算子是一种常用于图像处理的边缘检测技术,它有助于识别图像中的边缘和纹理特征。原理上,拉普拉斯算子是利用二阶差分计算边缘的。在一阶微分图中,极大值或极小值被认为是边缘;在二阶微分图中,极大值和极小值之间的过0点也被认为是边缘。

具体来说,拉普拉斯算子的一阶差分定义为f ' (x) = f (x) - f (x - 1),二阶差分定义为f ' (x) = (f (x + 1) - f (x)) - (f (x) - f (x - 1))。化简后得到f ' (x) = f (x - 1) - 2 f (x)) + f (x + 1)。在二维的情况下,拉普拉斯算子定义为f ' (x, y) = -4 f (x, y) + f (x-1, y) + f (x+1, y) + f (x, y-1) + f (x, y+1)。

因此,拉普拉斯算子具有各方向同性的特点,能够对任意方向的边缘进行提取,具有无方向性的优点,使用Laplacian算子提取边缘不需要分别检测X方向的边缘和Y方向的边缘,只需要一次边缘检测即可。

cv2.Laplacian()是OpenCV库中的一个函数,用于进行图像的拉普拉斯边缘检测。

该函数的基本语法如下:

python 复制代码
cv2.Laplacian(src, ddepth, ksize[, dst[, scale[, delta[, borderType]]]])

参数说明:

  • src: 输入图像,通常为灰度图。
  • ddepth: 输出图像的深度,可选参数,默认值为-1,表示与输入图像相同。
  • ksize: 用于计算拉普拉斯算子的核大小,必须为奇数。
  • dst: 输出图像,可选参数,默认值为None。
  • scale: 可选参数,默认值为1。
  • delta: 可选参数,默认值为0。
  • borderType: 可选参数,默认值为cv2.BORDER_DEFAULT。

返回值:

  • dst: 经过拉普拉斯边缘检测后的输出图像。

三、完整代码

python 复制代码
"""
使用拉普拉斯检测图像边缘
"""
import sys
import cv2 as cv

def main(argv):
    # 边缘输出数据类型,后续转uint8
    ddepth = cv.CV_16S
    kernel_size = 3
    window_name = "Laplace Demo"
    # 读个图片
    imageName = argv[0] if len(argv) > 0 else 'data/lena.jpg'
    src = cv.imread(cv.samples.findFile(imageName), cv.IMREAD_COLOR) 
    if src is None:
        print ('Error opening image')
        print ('Program Arguments: [image_name -- default lena.jpg]')
        return -1
    # 高斯降噪
    src = cv.GaussianBlur(src, (3, 3), 0)
    # 彩色图转灰度图
    src_gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
    cv.namedWindow(window_name, cv.WINDOW_AUTOSIZE)
    # 拉普拉斯检测边缘
    dst = cv.Laplacian(src_gray, ddepth, ksize=kernel_size)
    # 边缘数据类型转为uint8
    abs_dst = cv.convertScaleAbs(dst)
    cv.imshow(window_name, abs_dst)
    cv.waitKey(0)
    return 0

if __name__ == "__main__":
    main(sys.argv[1:])
相关推荐
Nautiluss7 小时前
一起玩XVF3800麦克风阵列(十)
linux·人工智能·python·音频·语音识别·实时音视频·dsp开发
BoBoZz197 小时前
MultiBlockDataSet 复合感知与非复合感知
python·vtk·图形渲染·图形处理
暴风鱼划水7 小时前
大型语言模型(入门篇)B
人工智能·语言模型·大模型·llm
鼎道开发者联盟7 小时前
构建活的界面:AIGUI底板的动态布局
人工智能·ui·ai·aigc·gui
无代码专家7 小时前
设备巡检数字化闭环解决方案:从预防到优化的全流程赋能
大数据·人工智能
兔子小灰灰8 小时前
jetson安装pytorch
人工智能·pytorch·python
weilaikeqi11118 小时前
拙诚育泽携手澳仕玛,夯实青少年AI科技竞争力
人工智能·科技
卷心菜加农炮8 小时前
MPK(Mirage Persistent Kernel)源码笔记(3)--- 系统接口
人工智能
神算大模型APi--天枢6468 小时前
合规与高效兼得:国产全栈架构赋能行业大模型定制,从教育到工业的轻量化落地
大数据·前端·人工智能·架构·硬件架构
Swizard8 小时前
拒绝“裸奔”上线:FastAPI + Pytest 自动化测试实战指南
python