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库中的一个函数,用于进行图像的拉普拉斯边缘检测。

该函数的基本语法如下:

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

参数说明:

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

返回值:

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

三、完整代码

"""
使用拉普拉斯检测图像边缘
"""
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:])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接雨水-困难

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1:输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

【精选】设计模式——策略设计模式-两种举例说明,具体代码实现

Java策略设计模式 简介 策略设计模式是一种行为型设计模式,它允许在运行时选择算法的行为。 在软件开发中,我们常常需要根据不同情况采取不同的行为。通常的做法是使用大量的条件语句来实现这种灵活性,但这会导致代码变得复杂、难以维护和扩…

017 OpenCV 向量机SVM

目录 一、环境 二、SVM原理 三、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、SVM原理 OpenCV中的向量机(SVM)是一种监督学习算法,用于分类和回归分析。它通过找到一个最优的超平…

VideoAssembler 一种新颖的方法,生成具有多样化内容的视频的方法

文章目录 摘要方法代码 VideoAssembler: Identity-Consistent Video Generation with Reference Entities using Diffusion Model 本文提出了VideoAssembler,一种新颖的方法,生成具有多样化内容的视频。它可以保留实体的保真度,并生成可控的内…

SAP 工序委外简介

在SAP系统中,外部加工分为工序委外和标准委外两种,对于工序委外,它存在于很多的模块中,在PP、PM、PS等模块中都有应用。 工序委外中字面理解就是在生产过程中,加工的某道工序需要外发给供应商进行加工,物权没有发生转变,只是支付给供应商相应是加工费用,实际加工成本最终…

动手学深度学习——Anaconda、pytorch、paddle安装(cpu版本)

之前出了个Windows下的深度学习安装,但在继续学习的过程中发现,沐神的一些代码跑不起来,这里又提供pytorch和paddle的安装,各位用pytorch或者百度飞桨paddlepaddle来学习深度学习也是可以的。 安装Anaconda 1. 打开Anaconda链接&…

每日一题,快来挑战,投个平台题目。

本关任务:将十个数进行从大到小的顺序进行排列。 相关知识(略) 编程要求 根据提示,在右侧编辑器Begin-End处补充代码。 输入 输入十个整数。 输出 以从大到小的顺序输出这个十个数。 测试说明 样例输入: 1 2 3 4 5 6 7 8 9 …

java设计模式学习之【组合模式】

文章目录 引言组合模式简介定义与用途:实现方式UML 使用场景优势与劣势组合模式在Spring中的应用员工结构示例代码地址 引言 设想您正在组织一个大型派对,需要将各种食品和饮料按类型整理。您可能有单独的物品,如一瓶苏打水,也可…

数字逻辑与数据系统实验报告

一、TTL 集成电路的功能测试 1、实验目的 (1)熟悉 TTL 各种门电路的逻辑功能; (2)掌握 TTL 各种门电路的逻辑功能测试方法; (3)掌握 Multisim 软件使用。 2、步骤设计 &#xff08…

如何在Spring Boot中优雅地重试调用第三方API?

文章目录 1. 引言2. 重试机制的必要性3. Spring Retry简介4. Spring Boot中使用Spring Retry实现重试4.1 添加依赖4.2 配置重试策略4.2.1 代码示例 4.3 降级处理4.3.1 代码示例 5. 异步重试5.1 异步方法的重试5.1.1 代码示例 5.2 异步方法的降级处理5.2.1 代码示例 6. 异常分类…

基于Unity3D 低多边形地形模型纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

java SSM毕业文档管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 毕业文档管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

计算UDP报文CRC校验的总结

概述 因公司项目需求,遇到需要发送带UDP/IP头数据包的功能,经过多次尝试顺利完成,博文记录以备忘。 环境信息 操作系统 ARM64平台的中标麒麟Kylin V10 工具 tcpdump、wireshark、vscode 原理 请查看大佬的博文 UDP伪包头定义&#x…

西工大计算机学院计算机系统基础实验一(函数编写15~17)

还是那句话,稳住心态,稳住心态,稳住心态。心里别慌,心里别慌,心里别慌。 第15题,howManyBits,返回用二进制补码形式表示x所需的最小二进制位数。比如howManyBits(12) 5,12可以被表…

轨迹分析:Palantir评估细胞分化潜能 类似于monocle2

轨迹分析是单细胞测序分析中重要的组成部分,它基于细胞谱系之间“具有中间态细胞”的理论基础,通过结合先验知识(细胞注释、markers)、细胞基因表达改变等,为在单细胞测序数据赋予了“假时间”(pseudotime&…

vscode eide arm-gcc 编译环境搭建调试

安装cube,vscode 1.安装vscode插件 C/C Extension Pack Chinese (Simplified) (简体中文) Language Pack Cortex-Debug Embedded IDE 工具链设置 2.软件工程生成 调试 3.生成工程,导入工程 4. 配置工程 编译完毕

【EI会议征稿】第五届大数据与信息化教育国际学术会议(ICBDIE 2024)

【往届检索】第五届大数据与信息化教育国际学术会议(ICBDIE 2024) 2023 5th International Conference on Big Data and Informatization Education 第五届大数据与信息化教育国际学术会议(ICBDIE 2024)定于2024年01月19-21日在…

小型洗衣机哪个牌子质量好?内衣洗衣机便宜好用的牌子

近些年来,由于人们对生活和健康的追求越来越高,所以内衣洗衣机也逐渐走进了人们的视线,许多研究显示,单纯地用手洗内衣是并不能彻底消除内衣物上所残留的细菌,而内衣洗衣机拥有着高温蒸煮的除菌功能,因此可…

【C语言】用户空间使用非缓存内存

在用户空间使用非缓存内存通常不是标准做法,因为非缓存内存的操作与硬件平台紧密相关,并且通常被保留给内核模块或设备驱动程序使用。 一、方法 用户空间程序一般不直接处理非缓存内存问题,因为它们依赖于操作系统来管理内存缓存一致性。尽…

智慧景区(园区)数字孪生可视化GIS解决方案

随着技术的日新月异,景区日常管理及运营中使用到的智慧化工具越来越丰富,智慧化硬件设备也越来越多,而其中各个管理系统往往又是相互独立,形成一个个数据孤岛。智慧景区管理平台就是将各个孤岛中的数据及功能汇集起来,…