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

news2024/11/13 18:37:04

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.coloradmin.cn/o/736122.html

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

相关文章

pytorch-Tensor

神经网络的数据存储中都使用张量(Tensor),那张量又是什么呢? py 张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。你可能对矩阵很熟悉,它是二…

商城小程序页面展示

——首页登录(wx.login(),getPhoneNumber) 进入首页时,加载商品列表数据展示在页面。从缓存中获取token信息,判断用户登录状态,如果用户没有登录,调用微信小程序的login方法,进行登…

Spring Boot原理分析(二):项目启动(下)——自动装配

文章目录 一、Spring手动装配1.使用XML配置文件2.使用Java注解3.使用Java类 二、Spring Boot自动装配1.AutoConfigurationPackage2.Import(AutoConfigurationImportSelector.class) 一、Spring手动装配 Spring Framework提供了多种手动装配的方式,其中比较常见的有…

硬盘被程序使用

diskutil list diskutil umount /dev/disk2s1退出该进程 硬盘即可成功退出

springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

一、重点 代码讲解:6-点赞功能-定时持久化到数据库-pipelinelua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码: blogLike_schedule/like06 xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://g…

ubuntu下,verdi语法错误Syntax error: “(“ unexpected

【问题】/home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: 56: /home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: Syntax error: "(" unexpected 【解析】 代码对于标准bash而言没有错,因为Ubuntu/Debian为了加…

网络应用基础交换机的基础操作(NETBASE第六课)

网络应用基础交换机的基础操作(NETBASE第六课) 1 回顾代码实操 主题背景的转换 字体设置 背景的设置 第一点 在操作ENSP个人建议要关闭防火墙 第二点 在操作ENSP软件是观察下面的软件是否全部关闭了 第三点 打开软件 ENSP软件注册信息 操作如下 注册前…

Oracle之Scott用户

Oracle增删改查,事务与序列 前言 1、解锁scott用户 2、雇员表(emp) 3、部门表(dept) 4、工资等级表(salgrade)了解 5、奖金表(bonus)了解 1、解锁scott用户 --解锁scot…

对卷积和全连接之间关系的学习(1*1卷积与全连接层可以互换吗?)

1.对于卷积和全连接 首先我们看一张图,它是一张关于卷积的操作: 然后在看关于全连接的操作: 从上面两张图中可以看出卷积的过程和全连接的过程,我们利用粉色的卷积核在image上进行卷积,进行内积计算得到输出值3&#…

调用GPU进行深度学习模型训练问题检查总结

1、电脑是否具有nvidia的GPU显卡。 2、安装的cuda版本是否超过显卡支持的最高版本。 在nvidia设置->帮助->系统信息->组件,可查看。 3、安装的pytorch是否为gpu版,即使在官网中复制的gpu版安装命令,安装得到的也有可能为cpu版。 建…

【监控系统】监控系统简介以及主流监控框架对比

互联网应用中离不开监控系统,那么为什么会有监控系统呢? 互联网公司产品通常是通过软件、网站、App或其他数字化方式提供服务的,这类产品在使用过程中可能会面临一系列风险和挑战。 比如网络故障或稳定性问题,由于网络故障、硬件…

外设资源共享须知

外设资源共享 具有相同ID的只能使用一个,无法同时使用。 例如当使能了SPIM0, 就不能用TWIM0,因为基地址相同,不能同时使用。此时建议使用TWIM1. 在sdk_config.h 中配置时需留意。

tecplot360 只显示指定phase的设定体积分数的区域

tecplot360 只显示指定phase的设定体积分数的区域 到数入据抽取切面设定显示体积分数范围 参考1: Tecplot中如何提取水线面(自由表面)并绘图 参考2: 两相流计算中,如何用Tecplot提取水相断面平均物理量? …

创建一个django项目详细说明

1.首先安装django pip install django 2.创建django项目 django-admin startproject myproject 输入命令后自动生成相关文件 manage.py文件:这是管理Django项目的重要命令行工具,它主要用于启动项目、创建应用和完成数据库的迁移等。settings.py文件&…

mongodb集群工作原理学习

mongodb集群 MongoDB集群有好几种方式:,主从模式,副本集模式和分片的模式 其中主从模式基本不再使用,大多是后面两种 副本集模式 副本集模式主要是用于实现服务的高可用性,类型Redis的哨兵模式. 它主要是的特点: 创建集群后会有主节点(primary)和从节点(secondary). 但从节点…

1765_Perl实现fileread功能

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) fileread是MATLAB中的一个函数,可以实现对一个文本文件的全文读取。读取后的内容返回给一个字符串量。在Python中也有类似的功能,不过MATLAB中的这个更能…

快速创建ES集群

win10 中docker 设置 快速创建集群 访问 官网 elasticsearch/docs/reference/setup/install/docker at main elastic/elasticsearch GitHub 负责上面2个文件,并修改,修改如下 .env文件 # Password for the elastic user (at least 6 characters) …

【私有云】网络虚拟化

前言 大家好,我是秋意零。 之前一直对 OpenStack 网络很陌生与神奇啊,不知道它是如何实现的,网络结构是怎样的。不过,今天介绍的是网络虚拟化,它在 OpenStack 中及云计算中是非常重要的概念,是理解 OpenS…

springboot整合websocket遇到的小问题

今天尝试了通过springboot整合websocket来初步学习使用websocket,然后发现启动的时候报错了,发这篇文章分享一下。 springboot整合websocket的步骤很简单: 第一步:创建一个springboot项目,在这里命名为websocket 在I…

day16 移除元素

题目描述 解题思路: 1.快慢指针,移除数组元素只能是下标操作;fast往前,不等于value的时候,赋给slow; 2.slow;返回的长度直接返回slow; int removeElement(int* nums, int numsSize, …