DrGraph原理示教 - OpenCV 4 功能 - 膨胀腐蚀

OpenCV 摄像头与视频入门(深扒版) 本文以统一心智模型贯穿始终:摄像头与视频文件均通过cv2.VideoCapture抽象处理,核心流程为“打开→读帧→处理→显示/保存”。强调帧即BGR格式的uint8 NumPy数组,坐标与颜色空间需注意错位((x,y) vs [y,x],BGR vs RGB)。内容涵盖环境安装(推荐opencv-python或headless版)、设备索引探测、分辨率/帧率设置、视频读写(含FourCC编码选择),并警示常见陷阱如read()返回元组、释放资源必要性等,实现从基础到实战的完整闭环。 阅读详情

在二值图的结果基础上,可针对性处理。
这些处理有些是概念上的,有些是原理上的,也有形态上的,那就看用途与目的了。
本质上还是对二值图的黑白点进行处理,以用于图像增强、边缘检测、图像分割等多个领域。比如膨胀与腐蚀。
膨胀:输入图像与结构元素进行卷积计算,取局部极大值来替代中心值,可以使相互分离的物体连接起来。
腐蚀:取局部极小值替换中心值,可以断开两个连接在一起的物体。
这个概念对于没太多理论支持的程序员来说,术语太多,可以简单理解就是,膨胀与腐蚀是相对于白色区域而言的。如果膨胀,白色区域就象面团发酵一样会胀大,但空间就那么大,可能两个面团就会挨上合并成一个面团了。如果腐蚀,就象拉面,原来一根面条,可能就断成两根,当然断的地方肯定是从细处断。
原理很简单,代码也很简单,膨胀与腐蚀分别对应两个函数:dilate与erode,这两个函数的参数都一样。

/** @brief Erodes an image by using a specific structuring element.

The function erodes the source image using the specified structuring element that determines the
shape of a pixel neighborhood over which the minimum is taken:

\f[\texttt{dst} (x,y) =  \min _{(x',y'):  \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f]

The function supports the in-place mode. Erosion can be applied several ( iterations ) times. In
case of multi-channel images, each channel is processed independently.

@param src input image; the number of channels can be arbitrary, but the depth should be one of
CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
@param dst output image of the same size and type as src.
@param kernel structuring element used for erosion; if `element=Mat()`, a `3 x 3` rectangular
structuring element is used. Kernel can be created using #getStructuringElement.
@param anchor position of the anchor within the element; default value (-1, -1) means that the
anchor is at the element center.
@param iterations number of times erosion is applied.
@param borderType pixel extrapolation method, see #BorderTypes. #BORDER_WRAP is not supported.
@param borderValue border value in case of a constant border
@sa  dilate, morphologyEx, getStructuringElement
 */
CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel,
                         Point anchor = Point(-1,-1), int iterations = 1,
                         int borderType = BORDER_CONSTANT,
                         const Scalar& borderValue = morphologyDefaultBorderValue() );

/** @brief Dilates an image by using a specific structuring element.

The function dilates the source image using the specified structuring element that determines the
shape of a pixel neighborhood over which the maximum is taken:
\f[\texttt{dst} (x,y) =  \max _{(x',y'):  \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\f]

The function supports the in-place mode. Dilation can be applied several ( iterations ) times. In
case of multi-channel images, each channel is processed independently.

@param src input image; the number of channels can be arbitrary, but the depth should be one of
CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
@param dst output image of the same size and type as src.
@param kernel structuring element used for dilation; if elemenat=Mat(), a 3 x 3 rectangular
structuring element is used. Kernel can be created using #getStructuringElement
@param anchor position of the anchor within the element; default value (-1, -1) means that the
anchor is at the element center.
@param iterations number of times dilation is applied.
@param borderType pixel extrapolation method, see #BorderTypes. #BORDER_WRAP is not suported.
@param borderValue border value in case of a constant border
@sa  erode, morphologyEx, getStructuringElement
 */
CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,
                          Point anchor = Point(-1,-1), int iterations = 1,
                          int borderType = BORDER_CONSTANT,
                          const Scalar& borderValue = morphologyDefaultBorderValue() );

其中,各参数含义如下:
src:输入图像。
kernel:用于腐蚀运算的核结构。
dst:输出图像(返回值)。
anchor:瞄点位置,默认是kernel对应区域的中心位置。
iterations:应用腐蚀操作迭代的次数。
borderType:边界模式,由BorderTypes定义。
borderValue:当边界模式为BORDER_CONSTANT时的边界像素值。
在这里插入图片描述
调试过程中,突然发现,膨胀腐蚀的输入也支持多通道图像,即不局限于灰度图
在这里插入图片描述
其中好坏利弊,那就看程序员自己体会了。

将GroundDINO、EdgeMTAM和FoundationPose的ONNX模型转换为TensorRT格式并部署到NVIDIA Jetson Orin平台的完整技术指南 TensorRT模型部署指南:从ONNX到Jetson Orin的优化实践 本文详细介绍了将GroundDINO、EdgeMTAM和FoundationPose模型从ONNX格式转换为TensorRT引擎并在Jetson Orin平台部署的全流程。主要内容包括: 环境配置:JetPack 5.1.2+环境搭建,TensorRT工具链安装,存储与交换空间优化 模型转换:动态尺寸处理、自定义算子实现、层融合策略及INT8量化校准 部署优化:引擎序列化加密、多模型并行推理架构设计、CUDA流异步执行 实战技巧。 阅读详情

相关推荐

【自动驾驶端到端5:VADv2: End-to-End Vectorized Autonomous Driving via Probabilistic Planning】

从大规模人类驾驶演示中学习类人驾驶策略是有希望的。但是,规划的不确定性使得从驾驶演示中提取驾驶知识是有挑战性的。从统计学习的角度来看,动作(包括实际和速度)是高度随机的,受许多无法建模的潜在因素影响。

weixin_40000560的博客 1404

DrGraph原理示教 - OpenCV 4 功能 - 形态操作

OpenCV作为一个基础的或通用的图像处理,那肯定是需要支持不同的需求,象刚说的这些主体差异,功能也是存在了,只不过采用了相应的所谓专业术语来进行称呼,如梯度、礼帽与黑帽。这些结果可以为主体,但很多地方还想看看边界或轮廓,那就需要在这些主体之间进行差值,或是减法操作,这样,结果就是边缘,就象两个大小不同的同心圆,差值后就得到圆环。从OpenCV图像处理基本知识来看,膨胀腐蚀操作后,还有形态操作,如开运算、闭运算、梯度、礼帽与黑帽,感觉很多,其实,本质上就是批处理操作,如。如,梯度 = 膨胀 - 腐蚀。

drgraph的博客 636

深入剖析一个卷积块(ConvBlock)

深入剖析一个卷积块(ConvBlock)

qq_45670407的博客 1924

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分在图像处理中,也不仅仅只是1或0,因为这两个值看起来都是黑的,人眼很难分辨清楚,那就放大一些,255或0,黑白就出来了目标识别、图像分割、目标提取等后续应用,很多会基于二值化的结果。所以图像分析的二值化处理是一个重要环节。

drgraph的博客 734

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5100

睿尔曼超轻量仿人机械臂--医疗工作站运行Demo(Python)

开发环境系统:win10Python版本:python 3.11.2由于机械臂相关软件版本不定期更新,如果你使用的软件接口或协议与本文有出入,请联系官方技术人员及时更新。

realman_Rop的博客 1094

DrGraph原理示教 - OpenCV 4 功能 - 阈值

参数4:阈值的方式,主要有5种,分别为cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV。有时间看下源码就可以不用猜测了。二进制阈值化:选择一个特定的阈值量,大于该阈值的像素点的灰度值设定为最大值(如8位灰度值最大为255),小于该阈值的像素点的灰度值设定为0。反阈值化为0:与阈值化为0类似,只是像素点的灰度值大于该阈值的不进行任何改变,而小于该阈值的,其灰度值全部变为0。

drgraph的博客 1447

AutoCAD二次开发(.Net)之XData

对于CAD中的实体进行筛选等操作,常常会用到实体的XData属性,下面介绍一下实体的XData的增删改。 //XData的新增,修改跟新增一样,new一个ResultBuffer,赋值即可 Document doc=Application.DocumentManager.MdiActiveDocument; using (DocumentLock dl = doc.LockDocument()) { using (Transaction trans = doc.TransactionManager.S.

qq_21489689的博客 2593

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。QT 6支持C++ 17,里面很多C++的新功能,用起来更为舒爽。QT Creator中,代码提示更快捷,代码折叠也很准确QT Creator中,文档生成更方便,配合Doxygen之后,自己都感觉更专业了当然,更让我高兴的是,QT直接支持最新版的OpenCV,以前还一直停留在2.3版。

drgraph的博客 1442

YOLOv8+BiFPN双向特征金字塔:多尺度目标检测精度提升28%的实战教程

双向特征金字塔网络(BiFPN)是一种强化多尺度特征融合支持“自顶向下+自底向上”的双向特征流动,同时保留不同尺度的细节信息;引入加权融合机制,自动学习不同特征的重要性权重;裁剪冗余节点,在轻量化的同时提升融合效率。

m0_64661770的博客 492

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5081

DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值(从0到255,不总是)的图在X轴上,在y轴上的图像对应的像素个数。通过观察图像的直方图,我们可以直观的了解图像的对比度、亮度、亮度分布等。在直方图中,横坐标表示图像中各个像素点的灰度级,纵坐标表示具有该灰度级的像素个数。直方图的左边部分显示了图像中较暗像素的数量,右边区域显示了更明亮的像素。直方图是非常常用的图像处理方法,有时在很多图像预处理中能起到特别好的效果。

drgraph的博客 1361

基于MATLAB开发AUTOSAR软件应用层模块-part2.建立一个AUTOSAR的模型,并生成autosar格式代码

上一篇我们建立了一个空模型,这篇我们接着上篇文章,建立一个简单的模型 点击 Library Browser,打开simulink模块库,见下图 左侧是模块库的列表,右侧是每个模块库里包含的具体的模块。 点击通用模块库,里边是一些常见的模块, 我们选取里边的3个模块,分别是输入,输出和增益三个模块,右键点击模块,选择add block to model xx,可以把模块添加到模型中。 然后练好连线 一个简单的模型就搭建好了,之后我们修改配置,将模型修改为AUT...

汽车软件开发 3302

BS版图形系统 - 界面控件配置

BS版图形系统 - 界面控件配置界面控件考虑资源配置化XML资源配置加载下一步任务 QQ: 282397369 界面控件考虑 有了属性浏览器,下来就该处理工具栏了。 一个直观感觉,网页留给程序的空间,要比应用程序少。网页在浏览器这个程序中运行,不同的浏览器,提供相应的界面,占据标题、工具栏位置,甚至书签与侧栏。所以做网页程序的时候,尽量能将工作区整大一些。 当然,如何整应该是UI设计的事,技术层面还是关心如何实现的问题。 在属性浏览器的基础上,初步实现了一个VCL的JS框架。但新建控件,还是要写一堆代码来控

drgraph的博客 1270

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

BS版图形系统 - 画线

BS版图形系统 - 画线 一晃两个月过去了,儿子也考了个喜欢的大学,重新,又稳定了下来。 我也重操旧业,编点小程序。时不时发个小博客,自娱自乐一下。 今天处理图元 - 线。 话不多说,直接上代码。 export class TLine extends TTwoPointMeta { beginArrow: TArrow = new TArrow; endArrow: TArrow = new TArrow; Initial() { this.setClassType(

drgraph的博客 774

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

DrGraph - SVG模块之一:显示与节点选择

DrGraph - SVG模块之一:显示与节点选择显示SVG编辑生成目标子集SVG 对于虚拟面板中的元件,以前采用FLASH技术实现相应显示与交互,通过ActionScript进行通信。现在看来,FLASH好象势微,使用起来有点麻烦,需要一些设置。其次,做FLASH的人也少了,后续也不太方便。 那就用SVG来进行改造。 显示SVG 将SVG解析置于DLL中,应用程序直接调用DLL完成解析并生成PNG,然后再画出显示。 UnicodeString filename = FResponseNode->At

drgraph的博客 680

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

DrGraph原理示教 - OpenCV 4 功能 - 单通道图

在OpenCV中,Mat类的channels实际上和每个元素上存储的数据有关,例如存储的是Point3f,channel就自动为3。具体来说,图像是由一个个像素点堆积而成的,而一个像素点,又是由RGB颜色混合而成的。从数学的角度来看,结果都是 f(R, G, B, A),单通道是R/G/B/A中的一个,灰度是其余逻辑,如0.299×R+0.587G+0.114B。当然,对编程来说,光知道通道数是多少,并没有什么大用,应该要取得某个通道的图像才是目的,这也是各图像的内在本质。这里的通道就是channels。

drgraph的博客 650

脚本为王 - 辅助功能

脚本为王 - 辅助功能目标通用辅助功能QQ自动反馈图像输入操作模式 QQ: 282397369 目标 之前做了个苹果全自动试玩脚本,发觉脚本+图像分析确实很有用,尤其是针对最终应用,比如手机业务、产品质量检测,其灵活性与实用性大大增加。 本月,送儿子去深圳上大学,发现深圳众多中小公司工厂,对脚本+图像分析的需求旺盛。 所以,干脆做一个通用的脚本模块软件,可用于诸多需求场合。 把多年不用的群208894875清空,改群名为脚本为王,笨狗先扎个狼狗势。 通用辅助功能 QQ自动反馈 该功能主要是在软件运行过程中,

drgraph的博客 649

DrGraph原理示教 - OpenCV 4 功能 - 边界填充

这里的核心就是理解borderType,具体就是。今天简单来看一下OpenCV中的边界填充。OpenCV 4 功能 - 边界填充。其实不用记,实验一下就了解。

drgraph的博客 631

DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻

二值化是逐像素处理,而逐像素处理会有很多效果,这主要是给人眼看的,因为像素值的变化,直观的就是图像变化,比如颜色。

drgraph的博客 615

BS版图形系统 - Ribbon工具栏初步

BS版图形系统 - Ribbon工具栏初步组件实现RibbonRibbonTabToolBarButton调用对应的xml运行效果下一步工作 QQ: 282397369 开始攻Ribbon,毕竟软件有个象样的界面,还是要拿得出手一点点。 思路就借鉴DevExpress,简化实现,不整太多的不必要环节。 第二个思路就是先实现功能,以后再模块化。 组件实现 先准备初步要用到的组件。 Ribbon export class TRibbon extends TPageControl { btnApp: TB

drgraph的博客 602

BS版图形系统 - 属性浏览器

BS版图形系统 - 属性浏览器 ** QQ: 282397369 ** 原理示教项目基本没跑,6月初确定动手。 两条线同时进展:管理系统和图形系统。 管理系统有正常前后端即可,图形系统还是主要的业务展示场合,一般的管理系统并不涵盖这些功能,所以干脆从头开发。 经过半个月的摸索尝试,最终选定TypeScript 作为图形工具,首先就要解决属性修改需求,即PropertyGrid。网上也有现成的PropertyGrid,但用起来代价太大,那就自己来做一个,也算是BS系统入个门。在以前用uniGUI的基础上,半个

drgraph的博客 447

OpenCV Python 入门学习笔记(小白版)

本文为OpenCV Python入门学习笔记,涵盖从环境配置到基础操作的11个核心知识点。重点讲解图片作为数字矩阵的存储原理、BGR颜色通道、坐标系统((x,y)与[y,x]区别)、图像读取与显示、色彩分离、灰度转换、裁剪、绘图、滤波、边缘检测、二值化及形态学操作。通过实战代码演示,强调“运行+修改参数”的学习方法,帮助新手快速掌握图像处理基础,避免路径错误、颜色混淆等常见陷阱。适合零基础者循序渐进上手。

敲代码的乔帮主 220

OpenCV 入门(五):视频处理与拖动条

本文介绍OpenCV视频处理基础,核心观点:视频即每秒30帧的Mat图像序列。通过VideoCapture捕获摄像头数据,循环读取frame(本质为Mat),可复用所有图像处理操作。关键要点包括:必须检查isOpened()、使用waitKey(1)维持流畅画面、变量声明在循环外以避免重复内存分配。结合拖动条实现阈值参数实时调节,支持Otsu自动调参。强调常见坑点:勿用waitKey(0)、变量需全局声明、窗口名禁用中文。最后指出帧率由采集与处理耗时共同决定,无专用视频API。

qq_35803412的博客 199

OpenCV 高级 001-图像修复

如果背景图与涂鸦颜色相差较大就需要使用 cv2.THRESH_TOZERO_INV。黑色(像素值较小)涂鸦 用 THRESH_TOZERO_INV 效果较好。像素值较大 涂鸦 用 THRESH_BINARY 效果较好。

Rainbow 189

OpenCV 从零入门(Python 版)

本文为 OpenCV Python 入门教程,面向零基础用户,涵盖图像读取、显示、写入、缩放、裁剪、平移旋转、标注、颜色空间、滤波、阈值分割、边缘检测、轮廓识别、视频处理及深度学习应用。内容基于 15 课体系,强调实战代码与常见坑点,核心概念包括图像即像素数组、坐标原点在左上角、BGR 颜色顺序,以及 cv2.imread 返回 None 的隐患。建议按序学习,掌握 cv2.imshow 与 waitKey 配合使用,熟练运用 NumPy 数组操作图像,快速上手计算机视觉基础技能。

敲代码的乔帮主 194
上一篇: DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻
下一篇: DrGraph原理示教 - OpenCV 4 功能 - 直方图
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值