OpenCV-Python实战(10)——形态学

1、腐蚀 cv2.erode()

可以删除图像中的噪音点。

可以删除毛边。

分割图像(当图像连接的不够紧密时) 。

img = cv2.erode(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)

img:目标图像。

src:原始图像。

kernel:腐蚀核大小。

anchor:锚点位置,默认是:(-1,-1),核的中心。

iterations:腐蚀操作迭代次数。

borderType、borderValue:边界样式,边界值,使用默认即可。

import cv2
import numpy as nppie = cv2.imread('pie.png')  # 圆
h,w = pie.shape[:2] # 图像的高,宽
pie[int(h/2-2):int(h/2+2),50:w-50]=0 # 在圆中间画一条线img1 = cv2.erode(src=pie,kernel=(11,11),iterations=3)  # 腐蚀cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

2、膨胀 cv2.dilate()

图像沿着边缘向外扩展的操作。

img = cv2.dilate(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)  

img:目标图像。

src:原始图像。

kernel:腐蚀核大小。

anchor:锚点位置,默认是:(-1,-1),核的中心。

iterations:腐蚀操作迭代次数。

borderType、borderValue:边界样式,边界值,使用默认即可。

import cv2
import numpy as nppie = cv2.imread('pie.png')  # 圆
h,w = pie.shape[:2] # 图像的高,宽
pie[int(h/2-2):int(h/2+2),50:w-50]=0 # 在圆中间画一条线img1 = cv2.dilate(src=pie,kernel=(11,11),iterations=4)cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

3、形态学通用函数 cv2.morphologyEx()

img = cv2.morphologyEx(src=*,op=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)

img:目标图像。

src:原始图像。

op:操作方式,常见操作方式如下表所示:

操作方式解释
MOREPH_ERODE腐蚀
MOREPH_DILATE膨胀
MOREPH_OPEN开运算
MOREPH_CLOSE闭运算
MOREPH_GRADIENT形态学梯度
MOREPH_TOPHAT礼貌运算
MOREPH_BLACKHAT黑帽运算

kernel:腐蚀核大小。

anchor:锚点位置,默认是:(-1,-1),核的中心。

iterations:腐蚀操作迭代次数。

borderType、borderValue:边界样式,边界值,使用默认即可。

4、开运算 cv2.morphologyEx()

先做腐蚀,在做膨胀操作。

import cv2
import numpy as nppie = cv2.imread('pie.png')  # 圆
h,w = pie.shape[:2] # 图像的高,宽
pie[int(h/2-1):int(h/2+1),50:w-50]=255 # 在圆中间画一条线img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_OPEN,kernel=(11,11),iterations=3)cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

5、闭运算  

先做膨胀操作,在做腐蚀操作。 

import cv2
import numpy as nppie = cv2.imread('pie.png')  # 圆
h,w = pie.shape[:2] # 图像的高,宽
pie[int(h/2-1):int(h/2+1),50:w-50]=0 # 在圆中间画一条线img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_CLOSE,kernel=(11,11),iterations=3)cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

 6、形态学梯度

膨胀操作后的图像 - 腐蚀操作后的图像 = 图像边缘 

import cv2pie = cv2.imread('pie.png')  # 圆img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_GRADIENT,kernel=(11,11),iterations=3)cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

 7、礼帽运算

原始图像 - 开运算图像 = 礼帽运算

可以得到原始图像的噪音点。

import cv2
import numpy as nppie = cv2.imread('pie.png')h,w = pie.shape[:2]
pie[int(h/2-1):int(h/2+1),:]=255 # 在圆中间画一条线img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_TOPHAT,kernel=(11,11))cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

 8、黑帽运算

 原始图像 - 闭运算图像 = 黑帽运算

import cv2
import numpy as nppie = cv2.imread('pie.png')h,w = pie.shape[:2]
pie[int(h/2-1):int(h/2+1),:]=255 # 在圆中间画一条线img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_BLACKHAT,kernel=(11,11))cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

9、核函数

kernel = cv2.getStructuringElement(shape=*,ksize=,anchor=*)

kernel:核矩阵。

shape:内核形状,常见的参数如下:

参数解释
MORPH_RECT所有元素都是1
MORPH_ELLIPSE椭圆形位置为1
MORPH_CROSS十字形位置是1

ksize:内核大小。

anchor:内核锚点,默认为:(-1,-1),核中心位置。

import cv2kernel1 = cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(5,5))
kernel2 = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE,ksize=(5,5))
kernel3 = cv2.getStructuringElement(shape=cv2.MORPH_CROSS,ksize=(5,5))
print(kernel1)
print(kernel2)
print(kernel3)cv2.waitKey(0)
cv2.destroyAllWindows()
[[1 1 1 1 1]    [[0 0 1 0 0]    [[0 0 1 0 0][1 1 1 1 1]     [1 1 1 1 1]     [0 0 1 0 0][1 1 1 1 1]     [1 1 1 1 1]     [1 1 1 1 1][1 1 1 1 1]     [1 1 1 1 1]     [0 0 1 0 0][1 1 1 1 1]]    [0 0 1 0 0]]    [0 0 1 0 0]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497335.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用VBA将word文档处理成支持弹出式注释的epub文档可用的html内容

有一种epub文件,其中的注释以弹窗形式显示,如下图: 点击注释引用后,对应的注释内容会弹出在页面中显示,再次点击弹窗外的任意位置该弹窗即关闭,关闭后点击任意注释引用,对应的注释内容会弹窗显示…

Ngnix介绍、安装、实战及用法!!!

一、Nginx简介 1、Nginx概述 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。 2、正向代理 正向代理:如果把局…

【超详细】Git的基本概念和基本使用方式

Git是程序开发中非常重要的工具,是一种分布式版本控制系统,可用于管理和追踪软件开发过程中的变化。那么关于Git的基本操作你知道吗?下面是Git的基本概念和使用方式的解释: 仓库(Repository):Gi…

springboot503基于Sringboot+Vue个人驾校预约管理系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装个人驾校预约管理系统软件来发挥其高效地信息处理的作用&am…

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例: m…

Pandas03

Pandas01 Pandas02 文章目录 内容回顾1 排序和统计函数2 缺失值处理2.1 认识缺失值2.2 缺失值处理- 删除2.3 缺失值处理- 填充非时序数据时序数据 3 Pandas数据类型3.1 数值类型和字符串类型之间的转换3.2 日期时间类型3.3 日期时间索引 4 分组聚合4.1 分组聚合的API使用4.2 分…

平凉一窝丝:丝丝缕缕的舌尖风情

在平凉的美食版图中,食家巷一窝丝以其独特的工艺和诱人的口感,占据着重要的一席之地,成为了平凉人心目中的经典美食之一。从外观上看,平凉食家巷一窝丝如同一盘精心雕琢的金丝,根根细丝紧密盘绕,整齐而美观…

Wordly Wise 3000 国际背单词01 介绍 + 测词汇量

📚 Wordly Wise 3000 国际背单词01 介绍 测词汇量 🌟 大家好!我们正式启动背Wordly Wise 3000单词,旨在利用国际资源和科学的学练方法,帮助大家更得效地坚持学练单词。我们将通过图文和Video等多种形式与大家分享经验…

C++进阶重点知识(一)|智能指针|右值|lambda|STL|正则表达式

目录 1智能指针1.shared_ptr1.1 shared_ptr的基本用法使用shared_ptr要注意的问题运用 2.unique_ptr独占的智能指针示例:管理动态内存 3.weak_ptr弱引用的智能指针weak_ptr的基本用法lock 的作用:weak_ptr返回this指针weak_ptr解决循环引用问题weak_ptr使…

计算机网络 (9)数据链路层

前言 计算机网络中的数据链路层(Data Link Layer)是OSI(开放系统互连)参考模型中的第二层,位于物理层和网络层之间。它在物理层提供的服务基础上,负责在相邻节点之间建立、维护和终止链路,确保数…

【Elasticsearch】DSL查询文档

目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.2.1.使用场景 1.2.2.基本语法 1.2.3.示例 1.2.4.总结 1.3.精准查询 1.3.1.term查询 1.3.2.range查询 1.3.3.总结 1.4.地理坐标查询 1.4.1.矩形范围查询 1.4.2.附近查询 1.5.复合查询 1.5.1.相关性算分 …

国内独立开发者案例及免费送独立开发蓝图书

独立开发者在国内越来越受到关注,他们追求的是一种自由且自给自足的工作状态。 送这个: 少楠light(Flomo、小报童、如果相机):他们是独立开发者的典范,不仅开发了多款产品,还坚信“剩者为王”…

Browser Use:AI智能体自动化操作浏览器的开源工具

Browser Use:AI智能体自动化操作浏览器的开源工具 Browser Use 简介1. 安装所需依赖2. 生成openai密钥3. 编写代码4. 运行代码5. 部署与优化5.1 部署AI代理5.2 优化与扩展总结Browser Use 简介 browser-use是一个Python库,它能够帮助我们将AI代理与浏览器自动化操作结合起来;…

园区网综合拓扑实验

一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求,完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan(本实验未使用) 4、上层…

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU? 本篇文章的目标是帮助初学者了解 CUDA 是什么,以及它如何与 PyTorch 配合使用,更重要的是,我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA,我们需要对图…

WebRTC Simulcast 大小流介绍与优化实践

Simulcast 是 WebRTC 中的一种标准化技术 ,简称大小流。通过 Simulcast,客户端可以同时发送同一视频的多个版本。每个版本都以不同的分辨率和帧率独立编码,带宽较多的拉流端可以接收较高质量的视频流,带宽有限的拉流端则可以接收较…

R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别

全文链接:https://tecdat.cn/?p38667 摘要:在母婴暴露于空气污染对儿童健康影响的研究中,常需对孕期暴露情况与健康结果进行回归分析。分布滞后非线性模型(DLNM)是一种常用于估计暴露 - 时间 - 响应函数的统计方法&am…

【从零开始入门unity游戏开发之——C#篇35】C#自定义类实现Sort自定义排序

文章目录 一、List<T>自带的排序方法1、List<T>调用Sort()排序2、 能够使用 Sort() 方法进行排序的本质 二、自定义类的排序1、通过实现泛型IComparable<T> 接口&#xff08;1&#xff09;示例&#xff08;2&#xff09;直接调用 int 类型的 CompareTo 方法进…

【驱动开发】设备分类、设备号申请和注销,注册和移除字符设备,以及一个基本的内核驱动程序框架代码

一、Linux内核对设备的分类 Linux的文件种类 序号符号类型文件内容文件名原信息1-普通文件√√√2d目录文件√√√3p管道文件√√4s本地socket文件√√5l链接文件软链接有;硬链接相当于别名√√6c字符设备√√7b块设备√√设备类型 Linux内核按驱动程序实现模型框架的不同,…

【最新】沃德协会管理系统源码+uniapp前端+环境教程

一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的商协会系统&#xff0c;新一代数字化商协会运营管理系统&#xff0c;以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点&#xff0c;实施功能全场景覆盖&#xff0c;一站式解决商协会需求壁垒&#xff0…