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算法的基本原理如下:
-
去噪:由于图像可能存在噪声,需要对图像进行高斯平滑来去除噪声。
-
计算梯度幅值和方向:使用Sobel算子对平滑后的图像进行梯度计算,并计算每个像素点的梯度幅值和方向。
-
非极大值抑制:对每个像素点的梯度幅值进行非极大值抑制,以保留边缘的细节。
-
双阈值检测:使用两个阈值来确定哪些边缘是强边缘,哪些是弱边缘。通常,梯度幅值大于第二个阈值的像素点被认为是强边缘,梯度幅值小于第一个阈值的像素点被认为不是边缘,而位于两个阈值之间的像素点被认为是弱边缘。
-
滞后阈值处理:对于位于两个阈值之间的像素点,如果其与某个强边缘相连,则将其视为强边缘,否则将其视为非边缘。这个过程叫做滞后阈值处理,可以进一步增强边缘的连通性。
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…...
QQ音乐格式解密终极指南:qmcdump带你打破数字音乐枷锁
QQ音乐格式解密终极指南:qmcdump带你打破数字音乐枷锁 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 音乐&…...
【仅剩72小时有效】ChatGPT最新指令缓存机制变更预警:所有未启用“strict_mode”配置的账号将于4月30日降权
更多请点击: https://kaifayun.com 第一章:ChatGPT自定义指令设置的底层逻辑与变更背景 ChatGPT 的自定义指令(Custom Instructions)并非简单的前端配置开关,而是深度集成于模型推理前处理(pre-inference …...
Taotoken 的 Token Plan 套餐如何帮助初创项目更可控地管理大模型调用预算
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 的 Token Plan 套餐如何帮助初创项目更可控地管理大模型调用预算 对于预算有限的初创团队或个人开发者而言,大…...
CentOS停服后,我为什么选了Rocky Linux 8.9?手把手教你从下载到配置网卡(附避坑点)
CentOS停服后,我为什么选了Rocky Linux 8.9?手把手教你从下载到配置网卡(附避坑点)当CentOS宣布转向Stream滚动更新模式时,整个运维圈都在寻找稳定可靠的替代方案。作为一位经历过CentOS 5到7全周期的系统管理员&#…...
2026运营经理进阶指南:从“执行者”到“数据操盘手”的能力跃迁
嘿,未来的运营总监们!👋 2026年的运营战场早已不是单纯拼“执行力”和“写文案”的时代了。你是否发现,只会盯着排期表催进度的运营,正逐渐被会用数据驱动业务增长、用AI提升效率的“操盘手”所取代?作为你…...
数据不是石油,是稀土:被误读的具身智能数据竞赛
一个被反复引用的判断是——"数据是具身智能时代的石油"。 我想说的恰恰相反:这个比喻,从一开始就错了。 一、五十万小时的困境 先看一组行业账目。 某国内头部具身智能企业,在预计投入的 20 亿元科研创新费用中,仅&q…...
OpenMemories-Tweak终极指南:3步解锁索尼相机全部隐藏功能
OpenMemories-Tweak终极指南:3步解锁索尼相机全部隐藏功能 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak OpenMemories-Tweak是一款专为索尼相机用户设计的开源工…...
为什么你的ChatGPT文案点赞不过50?:曝光量断层背后的3个隐藏信号+实时诊断自查表(附赠算法工程师内部校验清单)
更多请点击: https://codechina.net 第一章:为什么你的ChatGPT文案点赞不过50? 你精心打磨的ChatGPT提示词,生成了逻辑清晰、文风优雅的文案,却在社交平台仅收获47个赞——这并非内容质量的问题,而是**人机…...
Taotoken API Key管理与审计日志功能的安全价值感知
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken API Key管理与审计日志功能的安全价值感知 1. 引言 在团队协作开发中,将大模型能力集成到产品里已成为常见实…...
从‘黑客工具’到‘运维神器’:我是如何在Linux日常运维中用Netcat替代Telnet和Nmap的
从‘黑客工具’到‘运维神器’:Netcat在Linux日常运维中的五大实战场景如果你在运维领域摸爬滚打多年,一定遇到过这样的窘境:需要快速检查某个服务端口是否开放,却发现telnet没安装;想扫描几个常用端口,nma…...
