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

OpenCV Canny边缘检测

        本文是OpenCV图像视觉入门之路的第13篇文章,本文详细的介绍了Canny边缘检测算子的各种操作,例如:Canny算子进行边缘检测等操作。

Canny函数是OpenCV中用于执行边缘检测的函数之一,其参数包括:

  • threshold1:第一个阈值,用于在检测到的边缘上消除弱的像素点。通常设置为较小的值,例如50或100。
  • threshold2:第二个阈值,用于确定哪些像素点是强边缘,哪些是弱边缘。通常设置为较大的值,例如150或200。
  • apertureSize:Sobel算子的核大小。通常设置为3,表示使用一个3x3的核,但也可以设置为5、7或其他值。
  • L2gradient:一个布尔值,指示是否使用L2范数来计算梯度幅值。如果设置为False,则使用L1范数。

Canny算法的基本原理如下:

  1. 去噪:由于图像可能存在噪声,需要对图像进行高斯平滑来去除噪声。

  2. 计算梯度幅值和方向:使用Sobel算子对平滑后的图像进行梯度计算,并计算每个像素点的梯度幅值和方向。

  3. 非极大值抑制:对每个像素点的梯度幅值进行非极大值抑制,以保留边缘的细节。

  4. 双阈值检测:使用两个阈值来确定哪些边缘是强边缘,哪些是弱边缘。通常,梯度幅值大于第二个阈值的像素点被认为是强边缘,梯度幅值小于第一个阈值的像素点被认为不是边缘,而位于两个阈值之间的像素点被认为是弱边缘。

  5. 滞后阈值处理:对于位于两个阈值之间的像素点,如果其与某个强边缘相连,则将其视为强边缘,否则将其视为非边缘。这个过程叫做滞后阈值处理,可以进一步增强边缘的连通性。

Canny算法的目标是从图像中提取出尽可能准确的边缘信息,并尽量避免将噪声或者其他不重要的信息误判为边缘。

import cv2
import numpy as np
from numpy import unicodeif __name__ == '__main__':img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)# v1 = cv2.Canny(img, 80, 150)# v2 = cv2.Canny(img, 50, 100)v1 = cv2.Canny(img, 120, 250)v2 = cv2.Canny(img, 50, 100)#res = np.hstack((v1, v2))cv2.imshow("v1", v1)cv2.imshow("v2", v2)cv2.waitKey(0)cv2.destroyAllWindows()

 

 

相关文章:

OpenCV Canny边缘检测

本文是OpenCV图像视觉入门之路的第13篇文章,本文详细的介绍了Canny边缘检测算子的各种操作,例如:Canny算子进行边缘检测等操作。 Canny函数是OpenCV中用于执行边缘检测的函数之一,其参数包括: threshold1:…...

C#.Net正则表达式学习笔记

C#.Net正则表达式学习笔记 在处理字符串时,你会经常有查找符合特定条件的字符串的需求,比如判断一串电话号码是否符合格式、一个邮箱是否符合格式、一个密码是否包含了字母大小写等等。 正则表达式(Regular expressions)用于匹配文本,使用一…...

矩阵理论复习(十二)

已知方阵A的不变因子: 求谱半径求矩阵级数判断矩阵幂级数的收敛性 若矩阵B的某个算子范数小于1,则I-B可逆。 矩阵分析 任何相容矩阵范数都存在与之相容的向量范数。 盖尔圆盘定理一的证明 椭圆范数的证明 若||.||是Cm上的向量范数,A为…...

大数据框架之Hadoop:HDFS(七)HDFS 2.X新特性

7.1集群间数据拷贝 scp实现两个远程主机之间的文件复制 ​ scp -r hello.txt roothadoop103:/root/hello.txt // 推 push ​ scp -r roothadoop103:/root/hello.txt hello.txt // 拉 pull ​ scp -r roothadoop103:/root/hello.txt roothadoop104:/root //是通过本地主机中…...

Fluent工作目录

1 工作目录定义工作目录(working directory)是一种文件存储路径设置方式。基于工作目录的方法,写文件时只需要指定文件名,而不需要指定完全的文件路径,从而简化程序编写,对不同操作系统环境有更好的适应性。…...

Learning C++ No.10【STL No.2】

引言: 北京时间:2023/2/14/23:18,放假两个月,没有锻炼,今天去跑了几圈,一个字,累,感觉人都要原地升天了,所以各位小伙伴,准确的说是各位卷王,一定…...

【java 高并发编程之JUC】2w字带你JUC从入门到精通

点击查看脑图目录地址,实时更新 1 什么是 JUC 1.1 JUC 简介 在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的。JUC 就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。 1.2 进程与…...

QCon演讲实录(下):多云管理关键能力实现与解析-AppManager

在上篇中,我们已经基本了解了多云管理。现在,我们将深入探讨多云管理关键能力实现:AppManager。 什么是AppManager? 上面我们讲了理论、我们自己使用的交付流程和整体架构,下面我们进入关键能力实现与解析的环节&…...

刚刚退出了一个群,关于在要麒麟OS上运行Labview

年龄过了45,看问题,与以前不太一样了。 觉得浪费时间的事,宁可发呆,也不会参和。 竟然一个群里在讨论如何满足客户的需求:麒麟OS上运行Labview。 然后直接退了群。 这种问题,我觉得可能 发在csdn上&…...

el-uploader 文件上传后,又被修改,无法提交到后端 ERR_UPLOAD_FILE_CHANGED

problem 文件上传后,又被修改,无法提交到后端 具体步骤: 文件上传本地文件打开并修改保存提交ajax 这个问题不仅仅局限于el-uploader,是一个普遍性的问题 导致的问题 问题1:提交请求时,控制台报错 net…...

利用Eigen实现点云体素滤波

目录 前言 一、算法原理 二、代码实现 1.头文件 2.源文件 三、效果展示 前言 体素滤波原理简单,是常用的...

linux高级命令之多进程的使用

多进程的使用学习目标能够使用多进程完成多任务1 导入进程包#导入进程包import multiprocessing2. Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行的目标任务名…...

CSS 圆角边框 盒子阴影 文字阴影

目录 1.圆角边框(重点) 2.盒子阴影(box-shadow) 3.文字阴影(text-shadow) 1.圆角边框(重点) border-radius 属性用于设置元素的外边框圆角。 语法: border-radius: l…...

python简单解析打印onnx模型信息

当我们加载了一个ONNX之后,我们获得的就是一个ModelProto,它包含了一些版本信息,生产者信息和一个GraphProto。在GraphProto里面又包含了四个repeated数组,它们分别是node(NodeProto类型),input(ValueInfoProto类型)&a…...

UE4 编写着色器以及各种宏的理解

参考链接:如何为 UE4 添加全局着色器(Global Shaders) - Unreal Enginehttps://docs.unrealengine.com/5.1/zh-CN/adding-global-shaders-to-unreal-engine/如何为 UE4 添加全局着色器(Global Shaders) - Unreal Engin…...

小笔记:Python 使用字符串调用函数

小笔记:Python中如何使用字符串调用函数/方法?jcLee95:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址:https://blog.csdn.net/qq_28550263/article/details/111874476 邮箱 :291148484163.co…...

红黑树的原理+实现

文章目录红黑树定义性质红黑树的插入动态效果演示代码测试红黑树红黑树 定义 红黑树是一个近似平衡的搜索树,关于近似平衡主要体现在最长路径小于最短路径的两倍(我认为这是红黑树核心原则),为了达到这个原则,红黑树所…...

用于非线性时间序列预测的稀疏局部线性和邻域嵌入(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

使用 Vue3 重构 Vue2 项目

目录前言:一、项目整体效果展示二、项目下载使用方法三、为什么要重构项目四、重构的流程五、步骤中的 bug 以及解决方式六、未解决的问题总结:前言: 2020年9月18日,vue3正式版发布了,前几天学习完成后,我决…...

Hive学习——单机版Hive的安装

目录 一、基本概念 (一)什么是Hive (二)优势和特点 (三)Hive元数据管理 二、Hive环境搭建 1.自动安装脚本 2./opt/soft/hive312/conf目录下创建hive配置文件hive-site.xml 3.拷贝一个jar包到hive下面的lib目录下 4.删除hive的guava,拷贝hadoop下的guava 5…...

抖音批量下载神器:免费开源工具让你3分钟搞定海量视频收藏

抖音批量下载神器:免费开源工具让你3分钟搞定海量视频收藏 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

SITS2026认证通道即将关闭(仅剩87个企业配额):附官方兼容性检测工具链v1.3.0速领

更多请点击: https://intelliparadigm.com 第一章:SITS2026认证体系的核心定位与AI原生应用演进逻辑 SITS2026认证体系并非传统IT能力评估框架的简单迭代,而是面向AI原生(AI-Native)系统构建范式重构的技术治理基础设…...

初创团队如何利用 Taotoken 低成本启动 AI 功能开发

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用 Taotoken 低成本启动 AI 功能开发 对于初创团队和独立开发者而言,在项目早期验证一个 AI 驱动的产品…...

AI工具搭建自动化视频生成PromptLayer

好的,我们直接切入正题。聊聊PromptLayer。 很多人在用大模型的时候,感觉像是在跟一个天才但记性很差的同事合作。你告诉他一件事,他做得漂亮,但第二天你忘了当初具体是怎么说的,只能重新摸索。PromptLayer就是为了解决…...

AI技能化跨平台社交发布:一次编写,处处发布的自动化解决方案

1. 项目概述:一个为AI助手赋能的社交发布技能库如果你和我一样,经常需要将同一个项目更新、技术分享或者产品动态同步到十几个不同的社交媒体平台,那你一定深有体会:这活儿太磨人了。每个平台都有自己的调性、字数限制、图片尺寸要…...

手把手教你为网件R7900P/R7960P挂载U盘,解决JFFS分区不足50M的软件中心问题

网件R7900P/R7960P梅林固件U盘挂载全攻略:突破JFFS分区限制 最近在折腾网件R7900P路由器时,遇到了一个典型问题——刷完MerlinR固件后软件中心无法正常使用。经过排查发现是JFFS分区空间不足导致的,这让我不得不研究如何通过外接U盘来扩展存储…...

在快速演进的AI浪潮中,芯片设计如何应对挑战

专家圆桌讨论:芯片架构师在为边缘AI处理器进行设计时,需要应对多项复杂因素,其中快速迭代的AI模型尤为棘手。《半导体工程》杂志就此议题组织了一场深度对话,参与者包括:Arm边缘AI产品管理总监Ronan Naughton、Cadence…...

AMD Ryzen处理器系统管理单元调试工具深度解析:硬件级性能调优技术揭秘

AMD Ryzen处理器系统管理单元调试工具深度解析:硬件级性能调优技术揭秘 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目…...

开源技能市场架构解析:从去中心化设计到Docker部署实战

1. 项目概述:一个开源技能市场的构想与实践最近在GitHub上看到一个挺有意思的项目,叫“coolzwc/open-skill-market”。光看名字,你大概就能猜到它的方向——一个开源的技能市场。这让我想起了过去几年里,无论是作为开发者还是项目…...

Datadog Cursor插件:用自然语言对话查询监控数据的完整指南

1. 项目概述:在IDE里用自然语言查询Datadog如果你和我一样,日常开发离不开Datadog来监控应用状态,同时又重度依赖Cursor这类AI驱动的IDE来提升效率,那么最近Datadog官方推出的这个Cursor插件,绝对值得你花十分钟了解一…...