python+opencv-12 黑帽和礼帽运算

OpenCV(九)形态学操作4--礼帽与黑帽(顶帽与底帽) 目录 一、顶帽运算 二、底帽运算 三、底帽运算应用(二值图像底帽运算) 1、原图转灰度图,再转二值图像 2、灰度图底帽处理 3、二值图闭运算 代码 总代码 参考资料 一、顶帽运算 顶帽运算 = 原图像 - 开运算 开运算可以消除暗背景下的较亮区域,那么如果用原图减去开运算结果就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。 //顶帽运算 void TopHat() { //开运算 Mat kernel = getStructuringElement(MORPH_REC 阅读详情

python+opencv-12 黑帽和礼帽运算

黑帽和礼帽运算

黑帽和礼帽运算是建立在开运算与闭运算基础上的。
黑帽运算是指用原始图像减去闭运算结果,即:
B h a t ( I ) = I ⋅ S − I {{B}_{hat}}(I)=I\cdot S-I Bhat​(I)=I⋅S−I
该方法可以获得比原始图像边缘更加黑暗的边缘部分,或者获得图像内部的小孔。
礼帽运算是用原始图像减去开运算结果,即:
T h a t ( I ) = I ⋅ S − I {{T}_{hat}}(I)=I\cdot S-I That​(I)=I⋅S−I
该方法可以获得图像的噪声信息或者比原始图像边缘更亮的边缘部分。

代码实现

import cv2 as cv
import numpy as np

image = cv.imread("fu.jpg")
cl = cv.imread("cl.jpg")
k = np.ones((3, 3), np.uint8)
black = cv.morphologyEx(image, cv.MORPH_BLACKHAT, k)
top = cv.morphologyEx(cl, cv.MORPH_TOPHAT, k)

cv.imshow("image1", image)
cv.imshow("image2", cl)
cv.imshow("black", black)
cv.imshow("top", top)

cv.waitKey()
cv.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述
礼帽运算结果:
在这里插入图片描述

在这里插入图片描述

03 图像形态学处理 (腐蚀、膨胀操作、开闭运算、梯度运算、礼帽黑帽) 1.腐蚀操作 ''' 腐蚀原理:在一个卷积核内,如果存在不同的像素值,则某些像素会被另一部分腐蚀掉,即将其值修改为其他的像素值 当然,如果卷积核内像素值都一样则不会发生腐蚀,所以边界处腐蚀效果会更明显 ''' kernel = np.ones((3,3),np.uint8) #设置卷积核大小 erosion = cv2.erode(img,kernel,iterations = 1) #腐蚀操作... 阅读详情

相关推荐

【python opencv】黑帽和礼帽

在形态学图像处理中,黑帽(Black Hat)和礼帽(Top Hat)是两种常用的运算。它们常用于图像的特征提取,尤其是在检测图像的细节、噪声、和边缘等方面。虽然它们看起来与开运算和闭运算相似,但它们的作用是不同的。黑帽:黑帽运算主要用于检测图像中的暗区域,特别是图像中的小的亮区域或者光滑的物体边缘。它通过从原始图像中减去闭运算的结果,来提取图像中较为“平坦”的部分。礼帽:礼帽运算主要用于检测图像中的亮区域,特别是图像中的小的暗区域或者光滑的背景边缘。

m0_62599305的博客 923

基于python的opencv图像形态学处理(图像腐蚀与膨胀操作以及礼帽与黑帽)

腐蚀与膨胀 图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色,则该卷积核内像素值不变,但若是既有黑色又有白色,即在图像边缘处,那么膨胀操作则会将该卷积核内所有白色像素点都赋值变为黑色,以此将图像向内腐蚀掉一圈,而膨胀操作则相反,会将卷积核内的黑色像素点赋值成2白色,以此让图像膨胀一圈。 礼帽与黑帽 礼帽:将图像先进行开运算,再以原始图像减去开运算的结果,我们就可以得

weixin_62343847的博客 3466

python+Opencv学习教程02:图像形态学操作(开、闭、梯度、礼帽、黑帽运算)

开运算、闭运算、梯度运算、礼帽操作和黑帽操作

m1m2m3mmm的博客 4751

win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.7 礼帽运算

Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm 礼帽运算是用原始图像减去其开运算图像的操作。礼帽运算能够获取图像的噪声信息,或者得到比原始图像的边缘更亮的边缘信息。 例如,下图是一个礼帽运算示例,其中: ● 左图是原始图像。 ● 中间的图是开运算图像。 ● 右图是原始图像减开运算图像所得到的礼帽图像。 从图中可以看到,礼帽运算使用原始...

qq_951274168的博客 311

手把手教你用STM32CubeIDE移植Vector CCP驱动,实现与INCA的标定通信(附避坑指南)

本文详细介绍了如何在STM32CubeIDE环境下移植Vector CCP驱动,实现与INCA的标定通信。从开发环境准备、CAN外设配置到CCP协议栈移植和A2L文件生成,提供了完整的操作流程和常见问题解决方案,帮助工程师快速掌握基于CAN总线的标定技术。

weixin_28685287的博客 138

InSAR数据获取实战指南:Sentinel-1、精密轨道与ALOS PALSAR DEM的下载与应用

本文详细介绍了InSAR数据获取的实战指南,重点解析Sentinel-1数据、精密轨道数据(OPOD)和ALOS PALSAR DEM的下载与应用技巧。通过实际案例和代码示例,帮助读者掌握数据筛选、下载加速、校验及多源数据协同使用的关键方法,提升地面形变监测的精度与效率。

weixin_29215815的博客 432

opencv常用算法--礼帽和黑帽(形态学)

图像的礼帽和黑帽变换是数学形态学图像处理中的两个重要操作。它们用于检测图像中的局部亮度变化和暗度变化,常用于图像增强和物体识别等应用。

qq_43470534的博客 780

告别单一帧:在CFD-POST中完整加载Fluent瞬态计算结果的实战指南

本文详细介绍了在CFD-POST中完整加载Fluent瞬态计算结果的实战指南,解决工程师常见的只能看到最后一帧数据的问题。通过Fluent端的正确设置和CFD-POST端的完整加载技巧,帮助用户高效处理瞬态数据,提升后处理效率。文章还提供了常见问题排查、性能优化和高级后处理技巧,适用于Workbench环境下的流体流动分析。

weixin_29284657的博客 540

Opencv计算机视觉实战(Python版)

Opencv计算机视觉实战课程旨在帮助大家快速掌握机器视觉领域必备知识点原理及其在Opencv中的使用方法。课程风格通俗易懂,用最接地气的方式来讲解晦涩难懂的知识点。整体设计以项目实战来驱动学习,课程中所有代码均使用Python完成,在实战中首先讲解整体解决方案,接下来通过Debug模式来一步步分析每一行代码的作用及其完成的效果,提供全部课件及项目中所使用代码和数据。

当今用于探测和阻止无人机的 10 种反无人机技术

利用反无人机技术应对无人机威胁。

网络研究观 3541

WPF的基础设施:XAML基础语法

XAML是WPF的核心标记语言,采用XML语法实现界面与逻辑分离。其基础语法包括:1)控件声明方式(特性语法和属性元素语法);2)x:Name与Name的区别(适用范围和编译行为);3)注释规范与代码折叠技巧;4)实用特性如属性继承、附加属性等。文章还提供了常见错误排查方法,建议通过实践练习掌握XAML开发技巧。全文系统介绍了XAML的核心语法与应用场景,是WPF开发者的基础学习指南。

Hare的博客 1756

【OpenCV】Python图像处理形态学之礼帽黑帽运算

OpenCV-Python中的礼帽(TopHat)和黑帽(BlackHat)运算是基于开/闭运算的形态学操作,用于提取图像中的微小亮/暗区域。礼帽运算通过原图减去开运算结果获取亮区域,适用于文字增强和亮瑕疵检测;黑帽运算通过闭运算结果减去原图获取暗区域,适用于孔洞填充和暗噪声提取。实现时需注意选择合适结构元素(形状和尺寸),可结合其他形态学操作增强效果。这两种运算在文本处理、工业检测等领域具有重要应用价值,能有效增强局部对比度和提取微小特征。

棒棒的皮皮 1093

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

p6666666668的博客 1588

【opencv】(4) 形态学处理:腐蚀膨胀、梯度运算、礼帽黑帽

各位同学好,今天和大家分享一下图像的形态学处理方法。内容有: 膨胀腐蚀、开运算和闭运算、梯度运算、礼帽和黑帽 (1)腐蚀:cv2.erode();(2)膨胀:cv2.dilate();(3)形态学函数:cv2.morphologyEx(); 那我们开始吧。 我们先导入接下来操作需要的库文件和图像数据 import cv2 import numpy as np # 指定图片所在文件夹 filepath = 'C:\\...\\img\\changed' # 获取文件夹中的某张图 img = cv2

博观而约取,厚积而薄发 3534

Android 14安装的APK默认允许运行时权限

本文介绍了在Android系统中实现安装应用后自动授予运行时权限的方法。通过在安装完成广播中检测应用安装状态,调用新增的DefaultPermissionGrantPolicy.grantAppRuntimePermissions()函数来授予常规权限,并使用allowSpecialPermission()处理特殊权限(如安装未知应用和悬浮窗权限)。文章详细说明了如何修改DefaultPermissionGrantPolicy类,添加grantAppRuntimePermissions和grantRunti

热衷于Android Framework和系统APP的修改经验分享 683

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

[图像形态学操作]——腐蚀和膨胀、开闭运算、黑帽礼帽

形态学转换是基于图像形状的一些简单操作,它通常在二进制图像上执行。腐蚀和膨胀是两个基本的形态学运算符。然后它的变体形式如:开运算、闭运算、礼帽黑帽等。 一、连通性 在图像学当中,图像的最小单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有3种:4领接、D邻接和8邻接 连通性是描述区域和边界的重要概念,两个像素连通的两个必要条件是: 1、两个像素的位置是否相邻 2、两个像素的灰度值是否满足特定的相似性准则(或者是否相等) 根据连通性的定义,有4连通、8连通和m连通三种 1..

weixin_42067873的博客 2483

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

opencv学习笔记14:图像礼帽,图像黑帽

图像礼帽 图像礼帽 也叫图像顶帽 礼帽图像=原始图像-开运算图像 得到噪声图像 开运算:先腐蚀再膨胀 使用对象:二值图像 使用方法:morphologyEx cv2.MORPH_TOPHAT 结果=cv2.morphologyEx(原始图像,cv2.MORPH_TOPHAT,卷积核) 卷积核示例:k=np.ones((10,10),np.uint8) import cv2 import numpy as np o=cv2.imread("tophat.bmp",cv2.IMREAD_UNCHANGED)

总裁余(余登武)博客 2264

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

礼帽与黑帽(python->opencv)

要更好地理解礼帽(Top Hat)和黑帽(Black Hat)形态学变换,以及它们在图像处理中如何突出更亮或更暗的局部区域,我们需要深入了解开运算和闭运算的概念。开运算会去除这些小亮点,而礼帽变换将这些小亮点从图像中提取出来并突出显示。闭运算会填充这些小暗点,而黑帽变换将这些小暗点从图像中提取出来并突出显示。[ \text{Black Hat} = \text{闭运算结果} - \text{原始输入} ][ \text{Top Hat} = \text{原始输入} - \text{开运算结果} ]

weixin_39475026的博客 463

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

opencv+python入门之六(形态学之腐蚀、膨胀、开运算、闭运算、梯度操作、礼帽和黑帽等)

1.腐蚀 腐蚀具有收缩和细化图像前景的作用。其原理是定义一个结构元素,用这个结构元素去遍历整个图像,只有图像能够包含整个结构元素,该图像中心的点才会被保留。 腐蚀操作通过cv2.erode(src,kernel,iterations)函数来实现。其中腐蚀用的结构元素kernel需要自己事先定义好。不同的结构元素对腐蚀的效果也有很大的影响。iterations是指腐蚀迭代的次数,默认为1. 2...

布莱克的博客 1605

openCV:详解形态学操作(腐蚀、膨胀、开运算,闭运算等)

定义 形态学操作,例如腐蚀,膨胀,开运算,闭运算等 形态学操作是根据图像形状进行的简单操作 一般情况下对二值化图像进行的操作。 需要输入两个参数: 一个是原始图像, 一个被称为结构化元素或核,它是用来决定操作的性质的 原理 形态变换是基于图像形状的一些简单操作。它通常在二进制图像上执行。它需要两个输入,一个是原始图像,第二个是结构元素或核structuring element or kernel ,它决定我们操作的性质。两个基本的形态操作运算符是侵蚀和扩张。然后,是它们的变体形式,如开放,关闭,梯

Vermont_的博客 2万+

python+OpenCv笔记(七):图像的形态学操作(腐蚀与膨胀、开闭运算、礼帽与黑帽)

python+OpenCv笔记(七):图像的形态学操作(腐蚀与膨胀、开闭运算、礼帽与黑帽)

ReadyGo!!!的博客 2135

OpenCV学习之路(八)图像的形态学转换(腐蚀,膨胀,开、闭运算,梯度运算,礼帽,黑帽)

形态学操作是对图像形状进行的操作,一般情况下是对二值化图像进行的操作,两个基本的形态学操作是腐蚀和膨胀。 腐蚀 腐蚀操作很容易理解,与生活中的腐蚀意义一样,生活中的东西在腐烂的时候,总是会从边缘开始由外向内腐蚀。就是这个意思。 原理 使用卷积核遍历图像像素值,以卷积核的中心为中心,如果与卷积核对应的像素值全为1(即全是白色),像素值就保持不变。否则与卷积核对应的像素值就全变为0。也就体现出了边缘...

Hide on Bush的博客 2553

OpenCV_05 形态学操作:连通性+腐蚀和膨胀+开闭运算+礼帽和黑帽

1 连通性 在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有3种:4邻接、8邻接和D邻接。分别如下图所示: 4邻接:像素p(x,y)的4邻域是:(x+1,y);(x-1,y);(x,y+1);(x,y-1),用N​4​​(p)表示像素p的4邻接 D邻接:像素p(x,y)的D邻域是:对角上的点 (x+1,y+1);(x+1,y-1);(x-1,y+1);(x-1,y-1),用N​D​​(p)表示像素p的D邻域 8邻接:像素p(x,y)的8邻域是: .

小李的研究生学习日记 7879

Python 16.OpenCV 腐蚀,膨胀,开运算, 闭运算,礼帽,黑帽

import cv2 import numpy as np img = cv2.imread('pic7.PNG', 0) img1 = cv2.imread('pic8.PNG', 0) img2 = cv2.imread('pic9.PNG', 0) kernel = np.ones((5, 5), np.uint8) # 腐蚀 erosion = cv2.erode(img, kern...

qq_36071362的博客 332

使用cv2.morphologyEx()实现开运算,闭运算,礼帽与黑帽操作以及梯度运算

openvc中morphologyEx()函数是一种形态学变化函数。数学形态学可以理解为一种滤波行为,因此也称为形态学滤波。滤波中用到的滤波器(kernal),在形态学中称为结构元素。结构元素往往是由一个特殊的形状构成,如线条、矩形、圆等。 基本使用方式如下: cv2.morphologyEx(img, op, kernel) 参数op的取值 含义 cv2.MORPH_OPEN 开运算(open) ,先腐蚀后膨胀的过程。开运算可以用来消除小黑点,在纤细点处分离物体、平滑较大物体的边界

识物专栏 7万+
上一篇: python+opencv-11 开运算与闭运算
下一篇: TensorFlow自学笔记 - 基于官方文档 01 helloworld
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值