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 进行 Laplacian 算子和 Canny 边缘检测的过程中取得成功!

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

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

相关文章

在tplink路由器xdr6088中运行Docker潘多拉(pengzhile/pandora)遇到无法访问的问题

在xdr6088中搜索安装pengzhile/pandora一切正常,但是按照常规运行docker后,直接访问8899端口无法打开页面,进入终端 运行如下命令 /usr/local/bin/python /usr/local/bin/pandora-cloud -s 0.0.0.0:8899 即可成功运行,然后客户端…

面试交流会

面试交流 目录: 01:关于人生目标 02:关于心态 03:关于选择 04:关于学习 05:关于简历 06:关于找工作 1:关于人生目标 1.01、自己想成为什么样的人? 1.02、自己的人生目标是…

如何用https协议支持小程序

步骤一:下载SSL证书 登录数字证书管理服务控制台。在左侧导航栏,单击SSL 证书。在SSL证书页面,定位到目标证书,在操作列,单击下载。 在服务器类型为Nginx的操作列,单击下载。 解压缩已下载的SSL证书压缩…

kubernetes环境搭建及部署

一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源 的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效…

flutter tabBar 的属性及自定义实现

flutter tabBar 的属性及自定义实现 前言一、TabBar是什么?二、TabBar 自定义三、 Tab 自定义总结 前言 在Flutter中,TabBar的indicatorPadding属性用于设置指示器的内边距,而不是用于调整指示器和文字之间的间距。要调整TabBar中指示器和文字…

C#学习之路-常量

C# 常量 常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。 常量可以被当作常规的变量,只是它们的值在定义后不能被修改。 整数常量 整数常量可…

【密码学篇】GM密码行业标准下载方法

【密码学篇】GM密码行业标准下载方法 截止到2023年07月08日,密码行业标准化技术委员会共发布了144个密码行业标准,可点击链接预览或使用IDM下载器下载标准,此外该方法很多场景都适用,自行尝试—【蘇小沐】 文章目录 【密码学篇】…

【Linux】文件描述符 (上篇)

文章目录 📖 前言1. 文件的预备知识2. 复习C语言的文件操作3. Linux系统级文件接口3.1 open、 close、 read、 write 接口:3.2 内核当中实现的映射关系:3.3 如何理解Linux下一切皆文件: 📖 前言 本章开始,…

LVS负载均衡集群 keepalived

目录 1.实现方法 1.故障自动切换 (failover) 2.节点健康状态检查 (health checking) 2.实现LVS负载调度器 节点服务器的高可用(HA) 3.keepalived高可用故障切换原理 4.三个主要模块 5.案例 1.实现方法 1.故障自动切换 (failover) 主…

【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记

目录 一、Linux 的安全性1.1 /etc/passwd 文件1.2 /etc/shadow 文件1.3 添加新用户 —— useradd1.4 删除用户 —— userdel1.5 修改用户 —— usermod、passwd、chpasswd 二、使用 Linux 组2.1 /etc/group 文件2.2 创建新组 —— groupadd2.3 修改组 —— groupmod 三、理解文…

Java字符串类

string类的理解(以JDK8为例说明) 1.1的声明 public final class String implements java.io.Serializable&#xff0c; Comparable<String>&#xff0c; CharSequence final:String是不可被继承的 Serializable:可序列化的接口。凡是实现此接口的类的对象就可以通过…

今日分享:Midjourney巧妙地用参考图/垫图来绘画图

大家都知道AI绘画工具每次生成的效果都是随机的&#xff0c;但是现在很多AI绘图工具都提供了利用参考图/垫图的方式出图&#xff0c;这样就可以让让AI画作生成自己想要的布局、场景、色彩等等。 国内的AI绘图工具一般都好操作&#xff0c;国外主流的Midjourney也可以添加参考图…