当前位置: 首页 > 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…...

3分钟实现抖音无水印批量下载:从单视频到全量内容的高效管理方案

3分钟实现抖音无水印批量下载&#xff1a;从单视频到全量内容的高效管理方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fall…...

终极指南:KOReader开源电子书阅读器如何打造完美个性化阅读体验

终极指南&#xff1a;KOReader开源电子书阅读器如何打造完美个性化阅读体验 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址…...

终极指南:如何用ComfyUI-VideoHelperSuite快速构建专业视频工作流

终极指南&#xff1a;如何用ComfyUI-VideoHelperSuite快速构建专业视频工作流 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 想要在ComfyUI中轻松处理视频内容&a…...

macOS菜单栏优化指南:用Ice打造高效数字工作空间

macOS菜单栏优化指南&#xff1a;用Ice打造高效数字工作空间 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 你是否曾遇到这样的情况&#xff1a;打开Mac时&#xff0c;顶部菜单栏被数十个图标挤得水…...

免费开源游戏串流神器:Sunshine平台完整搭建与优化指南

免费开源游戏串流神器&#xff1a;Sunshine平台完整搭建与优化指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为无法在移动设备或客厅电视上玩PC游戏而烦恼吗&#xff1f…...

有什么快速可行的 SEO 优化方法可以推荐吗_想要快速提高 SEO 排名,应该重点做哪些工作

有什么快速可行的 SEO 优化方法可以推荐吗&#xff1f;想要快速提高 SEO 排名&#xff0c;应该重点做哪些工作 在当今的数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为每个网站运营者必须掌握的重要技能。特别是在百度这样的主流搜索引擎上&#xff…...

Nanbeige4.1-3B vLLM弹性伸缩:K8s HPA基于QPS自动扩缩vLLM实例数

Nanbeige4.1-3B vLLM弹性伸缩&#xff1a;K8s HPA基于QPS自动扩缩vLLM实例数 1. 引言&#xff1a;当大模型服务遇上流量洪峰 想象一下这个场景&#xff1a;你刚把一个文本生成模型部署上线&#xff0c;用户反馈很好&#xff0c;访问量开始稳步增长。突然&#xff0c;某个营销…...

S2-Pro与JDK1.8环境适配:企业老旧系统集成AI能力指南

S2-Pro与JDK1.8环境适配&#xff1a;企业老旧系统集成AI能力指南 1. 引言 "我们的核心业务系统还在用JDK1.8&#xff0c;能接入最新的AI能力吗&#xff1f;"这是很多技术负责人面临的现实困境。据统计&#xff0c;全球仍有超过65%的企业应用运行在Java 8环境中&…...

告别Auto.js6内存泄漏烦恼:手把手教你用Android API写内存看守狗(Watchdog)

构建Auto.js6内存看守狗&#xff1a;深入Android API与自动化脚本内存管理实践 在自动化脚本开发领域&#xff0c;Auto.js6因其便捷的无障碍服务集成和丰富的Android API调用能力&#xff0c;成为众多开发者的首选工具。然而&#xff0c;随着脚本运行时间的延长&#xff0c;内存…...

Youtu-VL-4B-Instruct WebUI部署教程:Nginx反向代理配置+HTTPS安全访问完整方案

Youtu-VL-4B-Instruct WebUI部署教程&#xff1a;Nginx反向代理配置HTTPS安全访问完整方案 1. 引言&#xff1a;为什么需要反向代理和HTTPS&#xff1f; 如果你已经成功部署了Youtu-VL-4B-Instruct的WebUI&#xff0c;现在可以直接通过 http://服务器IP:7860 访问&#xff0c…...