opencv常用边缘检测算子示例
opencv常用边缘检测算子示例
- 1. Canny算子
- 2. Sobel算子
- 3. Scharr算子
- 4. Laplacian算子
- 5. 对比
1. Canny算子
从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,检测算法可以分为以下5个步骤:
- 噪声过滤(高斯滤波)
- 计算图像梯度(Sobel滤波)
- 非极大值抑制(消除边缘检测带来的杂散响应)
- 双阈值处理(确定真实和潜在的边缘)
- 滞后阈值(抑制孤立的弱边缘)
import cv2
import matplotlib.pyplot as plotimg = cv2.imread('tmp.jpg', cv2.IMREAD_GRAYSCALE)
# 第2、3参数分别是低、高阈值
es = cv2.Canny(img, 100, 200)plot.figure(figsize=(6,3))
plot.subplot(1,2,1)
plot.title('Source image')
plot.imshow(img)
plot.subplot(1,2,2)
plot.title('Canny')
plot.imshow(es)plt.show()
2. Sobel算子
一种离散一阶导数的边缘检测算子,用于计算图像灰度函数的近似梯度,常用于边缘检测和特征提取,可以分别计算图像在X、Y方向的梯度。
import cv2
import numpy as np
import matplotlib.pyplot as plotimg = cv2.imread('tmp.jpg', cv2.IMREAD_GRAYSCALE)
sx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5)
sy = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5)
sxy = np.sqrt(sx**2 + sy**2)
sxy = np.clip(sxy,0,255)plot.figure(figsize=(12,3))
plot.subplot(1,4,1)
plot.title('Source image')
plot.imshow(img)
plot.subplot(1,4,2)
plot.title('Sobel x')
plot.imshow(sx)
plot.subplot(1,4,3)
plot.title('Sobel y')
plot.imshow(sy)
plot.subplot(1,4,4)
plot.title('Sobel x+y')
plot.imshow(sxy)plt.show()
3. Scharr算子
由Scharr提出的,用于替代Sobel算子,用于需要更高精度的边缘检测时,作为高精度边缘检测算子,用法跟Sobel类似。
import cv2
import numpy as np
import matplotlib.pyplot as plotimg = cv2.imread('tmp.jpg', cv2.IMREAD_GRAYSCALE)
sx = cv2.Sobel(img, ddepth=cv2.CV_64F, dx=1, dy=0)
sy = cv2.Sobel(img, ddepth=cv2.CV_64F, dx=0, dy=1)
sx = cv2.convertScaleAbs(sx)
sy = cv2.convertScaleAbs(sy)
sxy = cv2.addWeighted(sx,0.5, sy, 0.5, 0)plot.figure(figsize=(12,3))
plot.subplot(1,4,1)
plot.title('Source image')
plot.imshow(img)
plot.subplot(1,4,2)
plot.title('Scharr x')
plot.imshow(sx)
plot.subplot(1,4,3)
plot.title('Scharr y')
plot.imshow(sy)
plot.subplot(1,4,4)
plot.title('Scharr x+y')
plot.imshow(sxy)plt.show()
4. Laplacian算子
一种基于二阶导数的边缘检测方法,利用拉普拉斯算子来检测图像中强度变化的区域(边缘),即通过计算图像的二阶导数,找到图像亮度的突变点,从而定位边缘的位置。
import cv2
import matplotlib.pyplot as plotimg = cv2.imread('tmp.jpg', cv2.IMREAD_GRAYSCALE)
la = cv2.Laplacian(img, cv2.CV_64F)plot.figure(figsize=(6,3))
plot.subplot(1,2,1)
plot.title('Source image')
plot.imshow(img)
plot.subplot(1,2,2)
plot.title('Laplacian')
plot.imshow(la)plt.show()
5. 对比
算法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Canny 算子 | 噪声抑制能力强,边缘检测效果好 | 参数调节较为复杂 | 通用边缘检测,适合大多数场景 |
Sobel 算子 | 计算简单,适合检测水平和垂直边缘 | 对噪声敏感,边缘检测效果一般 | 检测水平和垂直边缘 |
Scharr 算子 | 对边缘的响应更强,适合检测细微边缘 | 对噪声敏感 | 检测细微的边缘 |
Laplacian 算子 | 可以检测边缘和角点 | 对噪声非常敏感 | 检测边缘和角点 |
相关文章:
opencv常用边缘检测算子示例
opencv常用边缘检测算子示例 1. Canny算子2. Sobel算子3. Scharr算子4. Laplacian算子5. 对比 1. Canny算子 从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,检测算法可以分为以下5个步骤: 噪声过滤(高斯滤波&…...
安装了VM Tools,仍无法复制拖动-解决方案
今天在安装ubuntu时遇到了困扰许久的问题,安装了VM Tools,仍无法拖动主机文件到虚拟机,主要有两种原因并对应解决办法。 1.相关虚拟机设置选项卡中-客户机隔离-两个功能没有勾选 解决方案:勾选重启虚拟机即可 2.(这个…...
一文读懂WPF布局
WPF布局 布局WPF 布局的核心机制常用布局控件详解Grid(网格布局)StackPanel(堆叠布局)DockPanel(停靠布局)WrapPanel(自动换行布局)Canvas(绝对定位布局)Unif…...
【Docker基础-网络】--查阅笔记4
目录 Docker 网络网络类型none 网络host 网络bridge 网络自定义网络 容器间通信IP 通信Docker DNS Serverjoined 容器 容器与外部通信容器访问外部外部访问容器 Docker 网络 学习Docker提供的几种原生网络如何创建自定义网络容器间通信,容器于外界交互 Docker 安装…...
FacialExpressionDetection的conda虚拟环境搭建Window
安装conda的URL:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 清华源下载conda版本,哪个最新用哪个,这里下载Anaconda3-5.3.1-Windows-x86_64.exe版本 安装conda虚拟环境 conda create --name py1…...
IPD推进中关键角色与岗位(七)LTDT确保技术开发的实用性与可靠性,满足市场需求
IPD 体系作为一种先进的研发管理模式,其核心在于打破传统职能部门的壁垒,通过跨部门团队的协同合作,实现产品开发的全流程优化。在 IPD 体系的架构中,存在着多个关键团队,它们各司其职又紧密配合,共同推动产…...
c++自学笔记——字符串与指针
字符串与指针 1. 字符串基础 字符串的定义:字符的序列,通常用来表示文本。 字符串字面量(String Literal)是在程序中直接用双引号括起来的文本序列。字符串字面量的类型是 const char*,即指向字符常量的指针。字符串…...
Jmeter分布式测试启动
代理客户端配置 打开jmeter.properties文件,取消注释并设置端口(如server_port1099), 并添加server.rmi.ssl.disabletrue禁用SSL加密。 (Linux系统)修改jmeter-server文件中的RMI_HOST_DEF为代理机实际IP。…...
.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具
🐉工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 🎯使用 本工具使用Python3 PyQt5开发,在开始使用前,请确保已经安装了相关模块: pip3 install -r requirements.txt -i ht…...
Coze+大模型智能体环境搭建
1 前言 Coze作为字节跳动推出的新一代AI Bot开发平台,为开发者提供了快速构建、部署智能对话代理的一站式解决方案。Coze平台通过提供可视化工作流编排、知识库集成、插件扩展等核心功能,结合一些大模型,例如豆包、deepseek、通义千问等大模型…...
计算机视觉与深度学习 | 视觉SLAM学习思路总结与视觉SLAM发展历程(1986年至2025年)
视觉SLAM(Simultaneous Localization and Mapping,同时定位与建图)是计算机视觉和机器人领域的重要研究方向,涉及数学、几何、优化、传感器融合等多学科知识。以下是学习视觉SLAM的系统化思路总结,适合从入门到进阶的学习路径:视觉SLAM学习思路总结 一、基础准备 数学基…...
Ansible(8)——循环与条件任务
目录 一、循环迭代任务: 1、简单循环: 2、循环字典列表: 3、Ansible 2.5 之前的循环关键字: 4、在循环中使用 register 变量: 二、条件任务: 1、使用条件句的常见场景: 2、条件任务语法…...
搭建Trae+Vue3的AI开发环境
从2024年2025年,不断的有各种AI工具会在自媒体中火起来,号称各种效率王炸,而在AI是否会替代打工人的话题中,程序员又首当其冲。 作为一个后端开发,这篇文章基于Trae工具,来创建和运行一个简单的Vue前端应用…...
【免费公测】可遇AI直播/无人直播/矩阵直播/AI场控
前言 经过了一个多月的内测打磨,实现了非常稳定的无人直播效果,AI直播语音及其真实,软件交互方便,可以快速的构建AI直播间。 免费公测,内置无限激活卡密一张,打开即用。 亮点 高仿真语音模型,…...
大数据Hadoop(MapReduce)
MapReduce概述 MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上…...
使用apache-jmeter时,控制台打不开应用的解决方法
运行jmeter.bat的时候,提示: findstr 不是内部或外部命令,也不是可运行的程序 或批处理文件。 Not able to find Java executable or version. Please check your Java installation. errorlevel2这个错误信息表明系统无法识别 findstr 命令…...
leetcode 74. 搜索二维矩阵
class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m matrix.length;int n matrix[0].length;int l 0;int r n * m - 1; // 记得减一while (l < r) {int mid (l r) / 2;if(matrix[mid / n][mid % n] > target) {r mid - 1;} else if…...
函数式编程在 Java:Function、BiFunction、UnaryOperator 你真的会用?
大家好,我是你们的Java技术博主!今天我们要深入探讨Java函数式编程中的几个核心接口:Function、BiFunction和UnaryOperator。很多同学虽然知道它们的存在,但真正用起来却总是不得要领。这篇文章将带你彻底掌握它们!&am…...
SpringMVC基础一(SpringMVC运行原理)
先了解MVC,在JavaWeb基础五中。 回忆servlet,在javaweb基础二中。 创建一个web项目: 1、新建maven项目,导入依赖。(junit、springmvc、spring-webmvc、servlet-api、jsp-api、jstl) <groupId>org…...
libva之ffavdemo分析
ffavdemo 代码库实现了一个基于FFmpeg和VAAPI的硬件加速视频解码与渲染框架,主要用于演示视频解码与渲染的完整硬件加速流程。支持多种渲染后端(X11、DRM、EGL),适应不同显示环境。包含视频处理过滤器,可进行格式转换和…...
从零开始写android 的智能指针
Android中定义了两种智能指针类型,一种是强指针sp(strong pointer),源码中的位置在system/core/include/utils/StrongPointer.h。另外一种是弱指针(weak pointer)。其实称之为强引用和弱引用更合适一些。强…...
Spark-SQL 之 Window
window 函数实例 select concat(substr(p_dt,1,4),substr(p_dt,6,2)...
Python设计模式-单例模式
一、单例模式核心思想 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。该模式主要解决以下问题: 资源控制(如数据库连接池)配置信息全局一…...
富文本编辑器的内容导出html,并保留图片
富文本编辑器的上传的图片默认转为base64,但是如果需要保存到数据库,base64的数据就太大了,所以一般都会长传到文件服务器,然会返回图片url。 但是当我们需要把富文本编辑器的内容导出为html时,因为图片时url,当浏览器…...
jQueryHTML与插件
1.jQuery 事件机制 1.1 注册事件 bind()、on()方法向被选元素添加一个或多个事件处理程序,以及当事件发生时运行的函数 $("p").on({"click": function () {alert("点击了")},"mouseenter": function () {…...
KTH5772 系列游戏手柄摇杆专用3D 霍尔位置传感器
产品概述 KTH5772是一款专为游戏手柄上的摇杆应用而设计的3D霍尔磁感应芯片,主要面向对线性度、回报率、灵敏度、功耗要求严格的摇杆应用。KTH5772基于3D霍尔技术,内部分别集成了X轴、Y轴和Z轴三个独立的霍尔元件,能够通过测量和处理磁通密度…...
C++进阶——C++11_右值引用和移动语义_可变参数模板_类的新功能
目录 1、右值引用和移动语义 1.1 左值和右值 1.2 左值引用和右值引用 1.3 引用延长生命周期 1.4 左值和右值的参数匹配 1.5 右值引用和移动语义的使用场景 1.5.1 左值引用主要使用场景 1.5.2 移动构造和移动赋值 1.5.3 右值引用和移动语义解决传值返回问题 1.5.4 右值…...
(五)深入了解AVFoundation-播放:多音轨、字幕、倍速播放与横竖屏切换
引言 在之前的博客中,我们已经实现了一个相对完整的播放器,具备了基本功能,如播放、暂停、播放进度显示和拖拽快进等。这为我们提供了一个坚实的基础。接下来,我们将进一步扩展播放器的功能,使其更具灵活性和实用性&a…...
matplotlib.pyplot常见图形及组合基础用法文档
matplotlib.pyplot 常见图形及组合基础用法文档 一、引言 matplotlib.pyplot 是 Python 中用于数据可视化的强大库,提供了丰富的绘图函数,可绘制折线图、散点图、柱状图等多种类型的图形。同时,还能将不同类型的图形组合在一起,…...
mysql的基础语句和外键查询及其语句
思路:双指针思路可以吗,我就直接找G,如果后一个是1就cnt,如果不是数字,用一个指针i指向G,另一个指针j移动,当不是G时停止,统计G的个数,如果是奇数个同时G的下一个是1,cnt…...
如何使用 DeepSeek 帮助自己的工作?
1. 信息检索 信息检索是获取特定信息的过程,尤其是在大量数据或文本中查找相关内容。这个过程应用广泛,从网页搜索引擎到数据库查询,再到企业内部信息系统。在使用 DeepSeek 或其它类似工具进行信息检索时,可以考虑以下几个重要方…...
为 Doub 打造吸引 CMO 的 SEO 报告
在数字营销中,SEO 报告不仅是展示工作成果的工具,更是向高层管理者(如 CMO)证明 SEO 价值的关键。对于 Doub 这样一家提供精密模切解决方案的网站(基于 WordPress 和 WooCommerce),撰写一份吸引…...
数据可视化 —— 折线图应用(大全)
一、导入需要的库 # Matplotlib 是 Python 最常用的绘图库,pyplot 提供了类似 MATLAB 的绘图接口 import matplotlib.pyplot as plt import numpy as np import pandas as pd 二、常用的库函数 plt.plot(x轴,y轴):plot()是画折线图的函数。 plt.xlabe…...
配置mac mini M4 的一些软件
最近更换了 mac mini M4 ,想要重新下载配置软件 ,记录一下。 Homebrew是什么? homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等功能。通过简单的指令可以实现包管理,而不用关心各种…...
八邻域轮廓跟踪算法_传感器技术
在科学技术日新月异的今天,人们对机器设备的智能性、自主性要求也越来越高,希望其完全替代人的角色,把人们从繁重、危险的工作任务中解脱出来,而能否像人一样具有感知周围环境的能力已成为设备实现智能化自主化的关键。 广义的“…...
python实战:如何正确安装 ffmpeg(window、linux、mac都通用)
直接使用 Conda 安装 FFmpeg,而无需手动下载或配置环境变量。Conda 会自动管理依赖项,并将 FFmpeg 添加到你的环境路径中。 方法 1:使用 Conda 安装 FFmpeg 在 Anaconda Prompt(或终端)中运行: conda install ffmpeg -c conda-forge-c conda-forge 表示从 conda-forge…...
网络机顶盒常见问题全解析:从安装到故障排除
WiFi连接问题 机顶盒无法连接WiFi,先检查路由器信号强度。若信号弱,可将机顶盒移近路由器,或调整路由器天线方向。也可重启机顶盒与路由器,若仍不行,进入机顶盒设置,重置网络设置。若支持5GHz频段…...
使用stm32cubeide stm32f407 lan8720a freertos lwip 实现tcp客户端、服务端及网络数据转串口数据过程详解
1前言 项目需要使用MCU实现网络功能,后续确定方案stm32f407 外接lan8720a实现硬件平台搭建,针对lan8720a也是用的比较多的phy,网上比较多的开发板,硬件上都是选用了这个phy,项目周期比较短,选用了这个常用…...
GAT-GRAPH ATTENTION NETWORKS(论文笔记)
CCF等级:A 发布时间:2018年 代码位置 25年4月21日交 目录 一、简介 二、原理 1.注意力系数 2.归一化 3.特征组合与非线性变换 4.多头注意力 4.1特征拼接操作 4.2平均池化操作 三、实验性能 四、结论和未来工作 一、简介 图注意力网络&…...
【蓝桥杯】贪心算法
1. 区间调度 1.1. 题目 给定个区间,每个区间由开始时间start和结束时间end表示。请选择最多的互不重叠的区间,返回可以选择的区间的最大数量。 输入格式: 第一行包含一个整数n,表示区间的数量 接下来n行,每行包含两个整数,分别表示区间的开始时间和结束时间 输出格式:…...
从一批视频里面抽取固定的第n帧图片(包含并行实现)
以下代码主要用于从 ./*.mp4 的文件夹中,每个视频中抽取第N帧保存成图,用于图生视频训练,考虑到数据量比较大,推荐使用ffmpeg来实现的,性能可以比较高(10w个视频差不多十多分钟就可以跑完)&…...
论文阅读:2024-arxiv How to Steer LLM Latents for Hallucination Detection?
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 How to Steer LLM Latents for Hallucination Detection? https://arxiv.org/pdf/2503.01917 https://www.doubao.com/chat/2818934852496130 其它资料: http…...
python面试技巧
文章目录 前言面试前面试中良好的沟通表达展示解决问题的能力体现学习能力和热情注意非语言沟通 面试后 前言 在 Python 面试中,掌握一些有效的技巧能让你更好地展现自己的能力和素质,以下是一些实用的面试技巧: 面试前 研究公司和岗位&…...
免费AI编程插件Fitten Code + IntelliJ IDEA实现AI辅助编程实战指南
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle…...
Vue3 + TypeScript 的 Hooks 实用示例
示例 1: 防抖 Hook(useDebounce) typescript // hooks/useDebounce.ts import { ref, watch, onUnmounted, type WatchSource } from vue;/*** 防抖 Hook* param source 监听的响应式数据源* param callback 防抖后执行的回调函数* param delay 防抖延…...
【DB2】事务日志满/归档占用较大问题处理记录
某DB2环境经常报错The active log is full and is held by...,并且归档磁盘占用较大 事务日志满 事务日志满可以理解为Oracle的redo追尾,即业务写入量大于redo刷盘速度,这时候其他SQL会陷入等待,容易造成性能问题 一般由两方面原…...
Rust 的征服:从系统编程到全栈开发的 IT 新宠
文章目录 Rust 的本质:性能与安全的完美平衡Rust 的演进:从 Mozilla 的实验到全球热潮核心技术:Rust 的杀手锏与生态所有权与生命周期高并发:无畏线程Cargo:现代构建工具生态繁荣:Crates.io Rust 的杀手级应…...
【力扣hot100题】(086)乘积最大子数组
感觉题目越来越难,这题不看答案真的想不到一点。 一开始绕了不少弯路,甚至想将每一个子数组的积全部求出来比较…… 答案的方法有点难懂。 方法如下:维护两个数,分别是目前为止最大数和最小数,最大数一般来说是正数…...
编译器bug ?
## 问题描述 两个结构几乎相同的模板实现,一个能正常工作,另一个在 VS2019 和 GCC 中都会报错。 ## 最小化测试代码 // bug_report.cpp #include <type_traits> #include <string>template<typename T> struct Type2Type { using t…...
算法刷题记录——LeetCode篇(1.8) [第71~80题](持续更新)
更新时间:2025-04-10 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 72. 编辑距离 给你两个单词 wo…...