OpenCV 入门教程:Laplacian算子和Canny边缘检测

OpenCV 入门教程: Laplacian 算子和 Canny 边缘检测

  • 导语
  • 一、Laplacian 算子
  • 二、Canny 边缘检测
  • 三、示例应用
    • 3.1 图像边缘检测
    • 3.2 边缘增强
  • 总结

导语

边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测方法,它们能够帮助我们准确地检测图像中的边缘信息。 OpenCV 提供了这两种算子的实现函数,使得边缘检测更加简单和高效。本文将以 Laplacian 算子和 Canny 边缘检测为中心,为你介绍使用 OpenCV 进行边缘检测的基本步骤和实例。

😃😄 ❤️ ❤️ ❤️

一、Laplacian 算子

Laplacian 算子是一种二阶微分算子,用于检测图像中的边缘信息。以下是一个使用 Laplacian 算子进行边缘检测的示例代码:

import cv2# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 使用Laplacian算子进行边缘检测
edges = cv2.Laplacian(image, cv2.CV_64F)
edges = cv2.convertScaleAbs(edges)

在上述示例中,我们使用 Laplacian 函数对灰度图像进行边缘检测。 cv2.CV_64F 参数表示输出图像的深度,用于保留边缘的细节。通过调整输出图像的阈值,可以获得更清晰的边缘线条。

二、Canny 边缘检测

Canny 边缘检测是一种经典的边缘检测方法,具有较好的性能和准确性。以下是一个使用 Canny 边缘检测进行边缘检测的示例代码:

import cv2# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 使用Canny边缘检测
edges = cv2.Canny(image, 100, 200)

在上述示例中,我们使用 Canny 函数对灰度图像进行边缘检测。 100200 参数表示边缘强度的低阈值和高阈值。通过调整这两个阈值,可以控制检测到的边缘的数量和质量。

三、示例应用

现在,我们来看一些常见的示例应用,演示 Laplacian 算子和 Canny 边缘检测的操作:

3.1 图像边缘检测

使用 Laplacian 算子或 Canny 边缘检测,可以检测图像中的边缘信息。以下是一个示例代码:

import cv2# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 使用Laplacian算子进行边缘检测
edges_laplacian = cv2.Laplacian(image, cv2.CV_64F)
edges_laplacian = cv2.convertScaleAbs(edges_laplacian)# 使用Canny边缘检测
edges_canny = cv2.Canny(image, 100, 200)

这个示例将加载名为" image.jpg "的灰度图像文件,并分别使用 Laplacian 算子和 Canny 边缘检测进行边缘检测。

3.2 边缘增强

除了边缘检测, Laplacian 算子和 Canny 边缘检测还可以用于图像的边缘增强。以下是一个示例代码:

import cv2# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 使用Laplacian算子进行边缘增强
edges_laplacian = cv2.Laplacian(image, cv2.CV_64F)
edges_laplacian_enhanced = cv2.addWeighted(image, 1, edges_laplacian, 0.5, 0)# 使用Canny边缘检测进行边缘增强
edges_canny = cv2.Canny(image, 100, 200)
edges_canny_enhanced = cv2.addWeighted(image, 1, edges_canny, 0.5, 0)

这个示例将加载名为" image.jpg "的灰度图像文件,并分别使用 Laplacian 算子和 Canny 边缘检测进行边缘增强。

展示:
在这里插入图片描述

总结

通过本文的介绍,你已经了解了使用 OpenCV 进行边缘检测的基本步骤。你学会了使用 Laplacian 算子和 Canny 边缘检测进行边缘检测,并通过示例应用了解了边缘检测和边缘增强的操作。

边缘检测是图像处理和计算机视觉中常用的一项任务,可用于目标检测、边缘定位和图像分割等应用。 Laplacian 算子和 Canny 边缘检测是常用的边缘检测方法,具有较好的性能和准确性。

[ 专栏推荐 ]
😃 《视觉探索:OpenCV 基础入门教程》😄
❤️【简介】:Opencv 入门课程适合初学者,旨在介绍 Opencv 库的基础知识和核心功能。课程包括图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪等内容。学员将通过学习基本操作和编程技巧,掌握 Opencv 在图像处理和计算机视觉任务中的应用。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN ? 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

Ubuntu18.04 系统安装 Docker

1、首先更新软件源: sudo apt-get updatesudo apt-get upgrade 2、安装Docker: sudo apt install docker -y 3、查看安装的Docker apt list docker 4、查看docker 进程 ps -ef|grep docker 5、查看docker 版本有问题 6、开启Docker服务 systemctl…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令,将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

Web安全——数据库mysql学习

数据库mysql基础 Web安全分享一、数据库的基本操作1、MYSQL登录与退出2、MYSQL数据库的一些解释3、MYSQL注释符有三种: 二、数据库的一些基本操作1、数据库的增删改查(sql语句) 三、table 表的操作1、查看表结构2、查看表的内容3、建立表4、约束条件5、修改表的操作…

网络通信原理系统的认知(NEBASE第十四课)

1 物理层 第一层 物理层:建立、维护、断开物理连接,定义了接口及介质,实现了比特流的传输。 1.1传输层介质分类 有线介质:网线 (双绞线)光纤 无线: 无线电 1.2 双绞线 五类线 cat5 :适用 10…

第二次CCF计算机软件能力认证

第一题:相邻数对 给定 n 个不同的整数,问这些数中有多少对整数,它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n,表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数,表示值正好相…

KMP算法

KMP KMP 算法是一个快速查找匹配串的算法,它的作用其实就是本题问题:如何快速在「原字符串」中找到「匹配字符串」。 而 KMP 算法的复杂度为 O(mn)实际上是O(N),因为O(M)不可能大于O(N) KMP 之所以能够在 O(mn)复杂度内完成查找,是因为其能…

巴斯夫与长三角物理研究中心开展合作,专注固态和钠离子电池领域

“巴斯夫,全球知名化学公司,宣布与长三角物理研究中心合作,在江苏溧阳市成立联合研究中心,专注于固态电池和钠离子电池的科研。” 根据巴斯夫官方微博消息,新成立的研究中心名为“巴斯夫–长三角物理研究中心新能源汽车…

高德地图的使用

JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…

【计算机网络】网络编程套接字(二)

文章目录 网络编程套接字(二)简单TCP服务器实现创建套接字服务器绑定服务器监听服务器接收连接服务器处理请求 简单TCP客户端实现创建套接字客户端发起连接客户端发起请求 服务器简单测试服务器简单测评多进程版TCP服务器捕捉SIGCHLD信号孙子进程提供服务…

【RuoYi-Cloud-Plus】学习笔记 09 - Sentinel(四)熔断降级知识整理

文章目录 前言参考目录版本说明学习笔记1、包结构2、DegradeSlot3、DegradeRule4、DegradeRuleManager5、CircuitBreaker5.1 CircuitBreaker.State6、AbstractCircuitBreaker6.1、AbstractCircuitBreaker#fromCloseToOpen6.2、AbstractCircuitBreaker#fromHalfOpenToOpen6.3、A…

支付宝接入

支付宝接入 python-alipay-sdk pycryptodome一、电脑网站支付 1.1 获取支付宝密钥 沙箱网址 1.APPID 2.应用私钥 3.支付宝公钥1.2 存放密钥 在与 settings.py 的同级目录下创建 pem 文件夹pem 文件夹下创建 app_private_key.pem 和 alipay_public_key.pem app_private_key…

神经网络初谈

文章目录 简介神经网络的发展历程神经网络的初生神经网络的第一次折戟神经网络的新生,Hinton携BP算法登上历史舞台命途多舛,神经网络的第二次寒冬神经网络的重生,黄袍加身,一步封神神经网络的未来,众说纷纭其他时间点 …

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 Proteus仿真小实验: STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 功能: 硬件组成:STM32F103R6单片机 LCD12864显示器多个按键 1.标准俄罗斯方块经典游戏玩法,带计时&#xff0c…

Kong 服务和路由的添加

管理服务 这里参考DB-less-Mode,因为使用的是yaml配置文件的形式,所以所有的相关配置只需要往初始化的kong.yml文件中添加就可以了,就像nginx的配置文件 DB-less-Mode 创建服务 vim /etc/kong/kong.yml services: - name: my-service #…

MySQL---表数据高效率查询(简述)

目录 前言 一、聚合查询 💖聚合函数 💖GROUP BY子句 💖HAVING 二、联合查询 💖内连接 💖外连接 💖自连接 💖子查询 💖合并查询 🎁博主介绍:博客名…

Idea 修改默认 Maven 为自己的

每次我们打开新项目时,都要去配置一遍 maven,很麻烦,其实可以去修改 idea 里面默认的 maven 配置,这样后面不管是打开新项目还是老项目,就都是用的自己的 maven 了. 1.文件->新项目设置->新项目的设置 File->Other Settings -> Settings for New Project 2.然后和…

git下载源码及环境搭建之数据库(二)

学习目标: 数据库 新项目使用 数据库文件 的配置 及相关属性的设置 步骤: 数据库 下图所示为开发时所用数据库 第一步:新建一个数据库 注意: 字符集与排序规则我们应该选择utf-8 相关 选中新创建的表,点击备份—还…

MySQL单表查询练习题

目录 第一题 第二题 第三题 第一题 1.创建数据表pet,并对表进行插入、更新与删除操作,pet表结构如表8.3所示。 (1)首先创建数据表pet,使用不同的方法将表8.4中的记录插入到pet表中。 mysql> create table pet( name varchar(…

centos7.9php8swoole5swoft2环境安装遇到确实redis扩展的解决办法

1、环境介绍 运行系统:centos7.9 php版本:php8.0.29 swoole版本:swoole5 swoft版本:swoft2.02、遇到的问题 The requested PHP extension ext-redis * is missing from your system. Install or enable PHPs redis extension。这…