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…...
4.2-4.4
这期准备iic驱动上一期已经准备好了设备树,iic的驱动代码分为 I2C 适配器驱动和 I2C 设备驱动,一般iic适配器驱动由soc厂商去写iic设备树追加:1 &i2c4 { 2 status "okay"; 3 pinctrl-0 <&i2c4m1_xfer…...
AI入门必看|一文搞懂人工智能是什么,小白也能秒懂
前言:随着ChatGPT、自动驾驶、AI绘画的普及,人工智能已经从“高大上的科技概念”走进了我们的日常生活,但很多小白面对“人工智能”四个字,还是会感到迷茫——它到底是什么?能做什么?和我们普通人有什么关系…...
避坑指南:在Nacos 2.2.3源码编译适配达梦DM8时,我遇到的5个典型错误及解决方法
Nacos 2.2.3源码编译适配达梦DM8实战:5个典型错误与深度解决方案 最近在将Nacos 2.2.3适配达梦DM8数据库的过程中,我踩了不少坑。这些坑有些是达梦特有的语法问题,有些是Nacos源码中的隐藏陷阱,还有些是环境配置的玄学问题。今天就…...
Cesium实战:手把手教你用四元数搞定飞行模型朝向,告别极点旋转Bug
Cesium实战:四元数驱动飞行模型朝向的终极解决方案 想象一下,你正在开发一个全球飞行模拟系统,当飞机接近北极点时,模型突然像失控的陀螺一样疯狂旋转——这不是特效,而是许多Cesium开发者遇到的经典痛点。传统欧拉角在…...
OpenClaw+千问3.5-35B-A3B-FP8:自媒体图文内容自动化生产
OpenClaw千问3.5-35B-A3B-FP8:自媒体图文内容自动化生产 1. 为什么选择自动化内容生产 作为一个长期运营技术自媒体的创作者,我每天需要花费大量时间在内容生产上:从选题策划、素材收集、文案撰写到排版发布,整个过程往往需要4-…...
DS3232 Arduino轻量RTC库:嵌入式时间管理与I²C优化实践
1. DS3232 Arduino库深度解析:面向嵌入式工程师的精简型RTC驱动实践指南1.1 库定位与工程设计哲学DS3232 Arduino库是一个专为嵌入式实时系统优化的轻量级IC实时时钟(RTC)驱动,其核心设计目标并非功能堆砌,而是在资源受…...
中国建材网:数字化赋能万亿产业升级,Unity游戏基础-4(人物移动、相机移动、UI事件处理 代码详解)。
中国建材网的行业定位与价值 中国建材网作为国内领先的建材行业B2B平台,通过整合供应链资源、提供数字化工具,推动传统建材行业从线下分散交易向线上集约化模式转型。平台覆盖水泥、玻璃、陶瓷等20余个细分领域,连接超50万家供应商与采购商&a…...
Mojo+Python混合编程避坑手册:5个致命安装错误及对应修复命令(附官方源码验证)
第一章:MojoPython混合编程避坑手册:5个致命安装错误及对应修复命令(附官方源码验证) Mojo 是 Modular 官方推出的高性能编程语言,原生兼容 Python 语法,但其工具链对环境依赖极为敏感。初学者在配置 MojoP…...
2025届必备的六大AI辅助写作平台横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 进行学术写作以及内容创作之际,使文本的AI生成痕迹得以降低,这是提升…...
2026届必备的十大AI科研网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 伴随人工智能技术的迅猛发展,AI论文工具已然成为学术写作范畴的关键辅助方式&…...
