当前位置: 首页 > news >正文

OpenCV中的边缘检测技术及实现

边缘检测是在电脑如何理解图片这一问题中的一环,它帮助电脑找出照片里的轮廓和分界线。想象一下你在看一幅黑白漫画,轮廓线定义了每一个角色和物体,而电脑要做的,就是通过边缘检测来找出这些线条。这在很多像是图像分析这样的领域里,尤其是在我们需要电脑识别和区分图片中不同物体时非常关键。OpenCV是一个功能强大的工具箱,它可以通过一些算法帮助我们实现边缘检测,这里我们会介绍两种常见的方法:Canny边缘检测和Sobel边缘检测。

边缘检测

接下来,让我们深入了解这两种方法的工作原理:

1. Canny边缘检测:

Canny边缘检测算法是处理图像边缘获取最为著名的技术之一,它的名字就源自发明者John F. Canny。这个算法很聪明,它不只是简单地找边缘线,而是有一套完整的步骤来确保最后找到的边缘既清晰又准确。首先,它会用一种名叫高斯滤波的技术,像用软布擦拭镜头一样,平滑图片以减少杂乱的噪声点。接着,它就像用放大镜观察图像,来计算图片中每一点周围的变化程度,这有助于揭示出哪些地方是潜在的边缘。然后,Canny算法会用一个特殊的方法筛选这些潜在边缘,确保边缘线条尽可能细且明确。最后,它会类似于使用智能滤镜,通过设定两个门槛值来决定哪些边缘是真正值得保留的。在OpenCV里,你可以直接调用cv2.Canny()函数来使用这个算法。

2. Sobel边缘检测:

Sobel边缘检测算法则更像是数学家的工具,它依靠计算图像亮度变化的速度——或者说图像梯度,来识别边缘。想象你在骑车遇到一个坡度变化,坡的陡峭程度就像是图片亮度变化的速度。Sobel算子使用两个小的网格(3x3的卷积核)来分别测量图片中每一点水平方向和垂直方向的“坡度”。一种核心专注于发现垂直方向的边缘,另一种则发现水平方向的边缘。把这两种检测结果结合起来,就能得到一幅清晰显露出所有边缘的图像。在OpenCV中,这可以通过调用cv2.Sobel()函数来实现。

程序实现:

下面通过一个程序来演示边缘检测技术。

python程序代码

下面是使用Python和OpenCV实现Canny边缘检测和Sobel边缘检测的示例代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 16 21:44:22 2024@author: 李立宗公众号:计算机视觉之光知识星球:计算机视觉之光"""import cv2
import numpy as np# 读取图像
image = cv2.imread('lena.bmp', 0)# Canny边缘检测
canny_edges = cv2.Canny(image, 100, 200)# Sobel边缘检测
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)
sobel_edges = np.sqrt(sobel_x**2 + sobel_y**2).astype(np.uint8)# 显示原始图像和边缘检测结果
cv2.imshow('Original Image', image)
cv2.imshow('Canny Edges', canny_edges)
cv2.imshow('Sobel Edges', sobel_edges)cv2.waitKey(0)
cv2.destroyAllWindows()

程序演示

可以看到通过各种不同的边缘检测所获取的效果。
在这里插入图片描述

小结

在这个示例中,我们读取了一张灰度图像,并分别使用Canny边缘检测和Sobel边缘检测算法进行了边缘检测。最后,将原始图像和边缘检测结果展示出来。

结论:

边缘检测是计算机视觉中重要的技术之一,用于识别图像中的边缘和轮廓。其中,Canny边缘检测和Sobel边缘检测是常用的方法,它们在OpenCV中都有相应的实现。本博客介绍了这两种方法的理论原理,并给出了使用OpenCV实现边缘检测的示例代码。希望通过本博客的学习,初学者可以对OpenCV中的边缘检测有一个清晰的了解,并将其应用于自己的项目中。

相关知识点

理解并实现OpenCV中的图像平滑技术

参考文献

1、OpenCV轻松入门
李立宗,OpenCV轻松入门,电子工业出版社,2023
在这里插入图片描述

2、计算机视觉40例
李立宗,计算机视觉40例,电子工业出版社,2022
在这里插入图片描述

相关文章:

OpenCV中的边缘检测技术及实现

边缘检测是在电脑如何理解图片这一问题中的一环,它帮助电脑找出照片里的轮廓和分界线。想象一下你在看一幅黑白漫画,轮廓线定义了每一个角色和物体,而电脑要做的,就是通过边缘检测来找出这些线条。这在很多像是图像分析这样的领域…...

机器学习基础(一)理解机器学习的本质

导读:在本文中,将深入探索机器学习的根本原理,包括基本概念、分类及如何通过构建预测模型来应用这些理论。 目录 机器学习 机器学习概念 相关概念 机器学习根本:模型 数据的语言:特征与标签 训练与测试&#xf…...

Eclipse - Makefile generation

Eclipse - Makefile generation References right mouse click on the project -> Properties -> C/C Build -> Generate Makefiles automatically 默认会在 Debug 目录下创建 Makefile 文件。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...

Sora:新一代实时音视频通信框架

一、Sora简介 Sora是一个开源的实时音视频通信框架,旨在提供高效、稳定、可扩展的音视频通信解决方案。它基于WebRTC技术,支持跨平台、跨浏览器的实时音视频通信,并且具备低延迟、高并发、易集成等特点。 --点击进入Sora(一定要科学哦&#x…...

龟兔赛跑算法

一、题目 给定一个长度为 n1 的数组nums,数组中所有的数均在 1∼n1 的范围内,其中 n≥1。 请找出数组中任意一个重复的数。 样例 给定 nums [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。 二、解析 解决这个问题的一种有效方法是使用快慢指针&#xf…...

Yii2项目使用composer异常记录

问题描述 在yii2项目中,使用require命令安装依赖时,出现如下错误提示 该提示意思是:composer运行时,执行了yiisoft/yii2-composer目录下的插件,但是该插件使用的API版本是1.0,但是当前的cmposer版本提供的…...

【蓝桥杯 2021】图像模糊

图像模糊 题目描述 小蓝有一张黑白图像,由 nm 个像素组成,其中从上到下共 n 行,每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。 现在,小蓝准备对图像进行模糊操作,操作的方法为: 对于…...

【leetcode】贪心算法介绍

详细且全面地分析贪心算法常用的解题套路、数据结构和代码逻辑如下: 找最值型: 每一步选择都是局部最优解,最后得到的结果就是全局最优解。常用于找零钱问题、区间覆盖问题等。一般情况下,可以通过排序将数据进行处理,…...

com.alibaba.fastjson.JSONException: toJSON error的原因

问题: 导出接口报错,显示json格式化异常 发现问题: 第一个参数为HttpResponse,转换成json的时候报错 修改方法: 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…...

华为配置旁挂二层组网直接转发示例

配置旁挂二层组网直接转发示例 组网图形 图1 配置旁挂二层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…...

OLMo 以促进语言模型科学之名 —— OLMo Accelerating the Science of Language Models —— 全文翻译

OLMo: Accelerating the Science of Language Models OLMo 以促进语言模型科学之名 摘要 语言模型在自然语言处理的研究中和商业产品中已经变得无所不在。因为其商业上的重要性激增,所以,其中最强大的模型已经闭源,控制在专有接口之中&#…...

单例模式双端检测详解

正确写出doublecheck的单例模式_double check单例模式-CSDN博客...

秦PLUS荣耀版7.98万元起震撼上市,拉开“电比油低”大幕

2月19日,秦PLUS荣耀版正式上市,五大颠覆、三大焕新刷新A轿体验新高度。DM-i版本5款车型,官方指导价7.98万元——12.58万元;EV版本5款车型,官方指导价10.98万元——13.98万元。正式开启“电比油低”新时代。 电比油低&a…...

学习总结19

# 奶牛的耳语 ## 题目描述 在你的养牛场&#xff0c;所有的奶牛都养在一排呈直线的牛栏中。一共有 n 头奶牛&#xff0c;其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi(0< pi < 10^8) 来表示。在无聊的日子里&#xff0c;奶牛们常常在自己的牛栏里与其它奶牛交…...

rancher v2.8.1 如何成功注册已有 k8s 集群

需要加入的集群为rke2部署的双节点集群 $ kubectl get node NAME STATUS ROLES AGE VERSION rke-master01 Ready control-plane,etcd,master,worker 94d v1.26.8rke2r1 rke-master02 Ready control-plane,etcd,mast…...

Vue中$root的使用方法

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…...

redis 异步队列

//produceMessage.ts 模拟生产者 import Redis from ioredis; const redis new Redis(); // 生产者&#xff1a;将消息推送到队列 async function produceMessage(queueName:string, message:string) {try {await redis.rpush(queueName, message);console.log(Produced messa…...

SpringBoot + Nacos 实现动态化线程池

1.背景 在后台开发中&#xff0c;会经常用到线程池技术&#xff0c;对于线程池核心参数的配置很大程度上依靠经验。然而&#xff0c;由于系统运行过程中存在的不确定性&#xff0c;我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时&#xff0c;一…...

《Docker极简教程》--Dockerfile--Dockerfile的基本语法

Dockerfile是一种文本文件&#xff0c;用于定义Docker镜像的内容和构建步骤。它包含一系列指令&#xff0c;每个指令代表一个构建步骤&#xff0c;从基础镜像开始&#xff0c;逐步构建出最终的镜像。通过Dockerfile&#xff0c;用户可以精确地描述应用程序运行环境的配置、依赖…...

css中, grid-auto-rows: 怎样简写在grid:中

grid-auto-rows:100px; grid-template-columns:1fr 1fr; &#x1f446;可以写成&#x1f447; grid:auto-flow 100px / 1fr 1fr;在CSS Grid布局中&#xff0c;grid-auto-rows 属性用于指定自动生成的网格容器的行的大小。如果你想要将 grid-auto-rows 的值简写在 grid 属性中&a…...

别再手动刷新了!用HomePage v0.8.2+Docker Compose,一键监控所有容器和网站状态

别再手动刷新了&#xff01;用HomePage v0.8.2Docker Compose&#xff0c;一键监控所有容器和网站状态 每次登录服务器都要挨个检查容器是否运行正常&#xff1f;网站挂了却要等用户反馈才知道&#xff1f;这种被动式运维早该淘汰了。今天介绍的这套方案&#xff0c;能让你的H…...

基于YOLOv10的低延迟AI瞄准系统:多平台硬件加速与实时检测架构设计

基于YOLOv10的低延迟AI瞄准系统&#xff1a;多平台硬件加速与实时检测架构设计 【免费下载链接】yolov8_aimbot Aim-bot based on AI for all FPS games 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_aimbot Sunone Aimbot是一个基于YOLOv10深度学习模型的FPS游…...

GD32F303外部中断实战:从按键消抖到中断优先级配置,一个例程全搞定

GD32F303外部中断实战&#xff1a;从按键消抖到中断优先级配置 第一次接触嵌入式开发时&#xff0c;最让我困惑的就是中断系统。记得当时用按键控制LED&#xff0c;明明代码逻辑没问题&#xff0c;LED却总是莫名其妙地闪烁。后来才发现是按键抖动导致多次触发中断。今天我们就以…...

医疗可穿戴跨界创新:从连续监测到专业检测的硬件设计实践

1. 项目概述&#xff1a;当可穿戴设备“走出”身体这几年&#xff0c;医疗可穿戴设备已经不是什么新鲜词了。从最初只能计步的手环&#xff0c;到如今能监测心率、血氧、心电图甚至血糖趋势的智能手表&#xff0c;它们正变得越来越“贴身”&#xff0c;也越来越“懂”我们的身体…...

魔兽争霸III终极优化指南:7大核心功能让经典游戏重获新生

魔兽争霸III终极优化指南&#xff1a;7大核心功能让经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸III》在现代电脑…...

Maxwell 磁芯损耗模型怎么选?Power Ferrite vs B-P Curve

🔖 开篇一句话总结 Power Ferrite:用斯坦梅茨公式算损耗,简单高效,适合标准铁氧体材料快速估算。 B-P Curve:直接用实测数据点插值,精度更高,适合非标准材料或追求极致仿真的场景。 一、底层逻辑有什么不一样? 🔹 Power Ferrite:公式拟合的 “标准模板” 它基于经…...

Navicat Premium连不上SQL Server?别慌,先检查这两个最容易忽略的配置(附驱动安装)

Navicat Premium连接SQL Server的实战排错指南&#xff1a;从报错到畅通的完整解决方案 第一次用Navicat Premium连接SQL Server数据库时&#xff0c;那种期待又忐忑的心情我太熟悉了。明明按照教程一步步填写了IP、端口、用户名和密码&#xff0c;点击"测试连接"后却…...

AI虚拟试衣间核心技术解析:扩散模型驱动的物理感知试穿

1. 项目概述&#xff1a;当AI试衣间不再只是“换脸”&#xff0c;而是真正理解布料、身体与光影的物理逻辑你有没有在电商页面反复放大模特图&#xff0c;手指悬在“加入购物车”按钮上&#xff0c;却迟迟不敢点下去&#xff1f;不是不想买&#xff0c;是怕那条标榜“垂感十足”…...

美国签证预约监控工具:自动发现更早日期并邮件通知

美国签证预约监控工具&#xff1a;自动发现更早日期并邮件通知 【免费下载链接】US-visa-appointment-notifier This is just a script I put together to check and notify me via email (MailGun) when theres an earlier date before my initial appointment date. It doesn…...

o3推理运行时与推理优化模型实战指南

1. 项目概述&#xff1a;当“智能体”真正开始自己动手干活最近在刷技术动态时&#xff0c;看到 TAI#149 这期简报标题里出现Agentic o3和Inference Optimized Models这两个词组合在一起&#xff0c;我立刻停下手头的活儿——这不是又一个“概念包装”&#xff0c;而是模型能力…...