形态学的基本操作在图片中的应用

一、形态学——腐蚀操作 (缩小、变细)

import cv2
import numpy as npimg_pig = cv2.imread('pig.png')
cv2.imshow('image_pig',img_pig)
cv2.waitKey(0)
cv2.destroyAllWindows()def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindows()# 腐蚀的核是5*5大小的
kernel = np.ones((5,5),np.uint8)
erosion1 = cv2.erode(img_pig,kernel,iterations=2)
erosion2 = cv2.erode(img_pig,kernel,iterations=4)
erosion3 = cv2.erode(img_pig,kernel,iterations=6)
res = np.hstack((erosion1,erosion2,erosion3))
cv_show('pig', res)

结果:

c3e3e5fc89124247a3bd146991d9bb63.png

二、膨胀操作(扩大,变粗)

kernel = np.ones((3,3),np.uint8)
dilate_1 = cv2.dilate(img_pig,kernel,iterations=1)
dilate_2 = cv2.dilate(img_pig,kernel,iterations=3)
dilate_3 = cv2.dilate(img_pig,kernel,iterations=5)
res = np.hstack((dilate_1,dilate_2,dilate_3))
cv_show('pig_1', res)

结果:

ea6d027023414a7c9c0a3f934859441b.png

三、开运算(先腐蚀,后膨胀 不带刺)

kernel = np.ones((30,30),np.uint8)
opening = cv2.morphologyEx(img_pig, cv2.MORPH_OPEN, kernel)
cv_show("opening", opening)

结果:

c48feaa702154a8ba2b0f8c89fadf921.png

四、闭运算(先膨胀,后腐蚀 刺变大,并且腐蚀不掉)

kernel = np.ones((30,30),np.uint8)
closing = cv2.morphologyEx(img_pig,cv2.MORPH_CLOSE,kernel)
cv_show("closing", closing)

结果:

ed3a7e632fb14e2a9f858921d6c2e151.png

五、梯度运算(梯度 = 膨胀——腐蚀)

kernel = np.ones((10,10),np.uint8)
dilate_1 = cv2.dilate(img_pig,kernel,iterations=5)
erosion1 = cv2.erode(img_pig,kernel,iterations=5)
gradient = cv2.morphologyEx(img_pig, cv2.MORPH_GRADIENT,kernel)
cv_show('tidu', gradient)

结果:

cf9ab95159b7458c906233b91de7814f.png

六、礼貌与黑帽(原始输入-开运算结果:执行结果,只有刺)

tophat = cv2.morphologyEx(img_pig, cv2.MORPH_TOPHAT,kernel)
cv_show('tophat', tophat)

结果:

bd51d2c88169499fa06b3ba799a2bb02.png

七、黑帽(没有刺,只剩下轮廓)

blackhat = cv2.morphologyEx(img_pig, cv2.MORPH_BLACKHAT,kernel)
cv_show('blackhat', blackhat)

结果:

ad3f830313424f7a800e1f3aef0d2ebc.png

对图像的处理当中,值得注意的是,在代码中设置合适的核的大小,以及迭代次数的多少,对图像的处理结果是有重要的影响的,所以在处理图像时,需要根据所需要的要求来对=代码参数做出合理的调整。

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

element-plus的菜单组件el-menu

菜单是几乎是每个管理系统的软件系统中不可或缺的,element-plus提供的菜单组件可以快速完成大部分的菜单的需求开发, 该组件内置和vue-router的集成,使用起来很方便。 主要组件如下 el-menu 顶级菜单组件 主要属性 mode:决定菜单的展示模式…

MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)

目录 讲点一:高级字符串函数 一、简介 二、常见字符串函数 1. CONCAT() 2. SUBSTRING() 3. LENGTH() 4. REPLACE() 5. TRIM() 6. UPPER() 7. LOWER() 8. LEFT() 9. RIGHT() 10. INSTR() 11. LENTH(str) 讲点二:正则表达式 一、简介 二、…

Defining Additional PhysicalConstraints

步骤3:定义附加物理 约束条件 在此步骤中,您将定义设计的其他物理约束,例如 PACKAGE_PIN和禁止约束。 1.选择布局→I/O规划,从布局选择器打开I/O规划视图布局 在工具栏菜单中。 I/O规划视图布局显示包窗口以及I/O端口和 封装引脚窗…

华为地图服务 - 如何开启和展示“我的位置”? -- HarmonyOS自学10

一. 场景介绍 本章节将向您介绍如何开启和展示“我的位置”功能,“我的位置”指的是进入地图后点击“我的位置”显示当前位置点的功能。效果如下: 二. 接口说明 “我的位置”功能主要由MapComponentController的方法实现,更多接口及使用方法…

学习笔记(一)

前言 一、对象 1、由类建模而成,是消息、数据和行为的组合 2、可以接收和发送消息,并利用消息进行彼此的交互。消息要包含传送给对象接收的信息 3、类的实例化:把类转换为对象的过程叫类的实例化。 4、对象的特性 (1) 对象有状态&#…

QUIC的loss detection学习

PTO backoff backoff 补偿 /ˈbkɒf/PTO backoff 是QUIC(Quick UDP Internet Connections)协议中的一种机制,用于处理探测超时(Probe Timeout, PTO)重传策略 它逐步增加探测超时的等待时间,以避免网络拥塞…

【FreeRTOS】任务

1.使用stm32cubemx配置freertos 2.创建任务 我们需要在MX_FREERTOS_Init()里面创建任务 我们根据上面的任务创建方式,实现GPIO_PIN_10的反转 1.任务句柄 2.任务结构体 3.任务执行函数 4.任务函数声明 5.创建线程执行任务 hal_delay和osDelay区别?…

Qt (17)【Qt 文件操作 读写保存】

阅读导航 引言一、Qt文件概述二、输入输出设备类三、文件读写类四、文件和目录信息类五、自定义“记事本” 引言 在上一篇文章中,我们学习了Qt的事件处理机制,知道了如何响应用户的操作。但应用程序常常还需要处理文件,比如读写数据。所以&a…

应用软件系统开发 实操一:任务需求描述

一、实操一:任务需求描述 软件和信息技术服务业数据统计平台是一个为不同级别管理员提供定制化服务的系统。它主要面向数据管理员和系统运维管理员,每一种用户角色各自拥有特定的功能权限。系统运维管理员是专门针对平台基础功能的管理人员,它…

08_Python数据类型_字典

Python的基础数据类型 数值类型:整数、浮点数、复数、布尔字符串容器类型:列表、元祖、字典、集合 字典 字典(Dictionary)是一种可变容器模型,它可以存储任意类型对象,其中每个对象都存储为一个键值对。…

如何评估土壤功能?瓦赫宁根大学研究团队在土壤学一区TOP期刊最新成果给出答案!

本文首发于“生态学者”微信公众号! 土壤健康是农业可持续发展的关键因素之一,而土壤有机碳(Soil Organic Carbon, SOC)含量是衡量土壤健康最常用的指标。然而,许多土壤功能不仅受SOC总量的影响,还与其质量…

FreeRTOS学习——链表list

FreeRTOS学习——链表(列表)list,仅用于记录自己阅读与学习源码 FreeRTOS Kernel V10.5.1 参考大佬的好文章: freertos内核原理 Day1(链表) FreeRTOS-链表的源码解析 *list_t只能存储指向list_item_t的指针。每个list_item_t都…

photozoom classic 9解锁码2024年最新25位解锁码

photozoom classic 9 破解版顾及比恐龙还要稀有,我曾经和你一样一直再找,找了好几个月,也没有找到真的破解版,下载很多次, 都是病毒插件之类的 我昨天下了几次,没有一个不附带插件病毒木马的.......&#x…

基于深度学习的图像分类或识别系统(含全套项目+PyQt5界面)

目录 一、项目界面 二、代码实现 1、网络代码 2、训练代码 3、评估代码 4、结果显示 三、项目代码 一、项目界面 二、代码实现 1、网络代码 该网络基于残差模型修改 import torch import torch.nn as nn import torchvision.models as modelsclass resnet18(nn.Modul…

数据结构(2):LinkedList和链表[2]

我们在上一篇文章中着重讨论了单链表的实现。其中我们要注意单链表进行遍历时一步一步走的思想。那么这篇文章我们将继续讨论链表的更多内容,那就让我们开始吧。 1.经典单链表算法题 我们将通过几个经典的题对单链表进行进一步的认识。 (1)反转链表 206. 反转链…

cas 5.3服务器搭建

项目环境要求 jdk1.8,tomcat8 网盘下载(官网下载速度慢可以用此方法下载) 网盘链接:8910官网各稳定版本,软件包点击自取 cas5.3git代码 https://github.com/apereo/cas-overlay-template/tree/5.3 刚拉下来的代码目录…

OJ题-反转链表

给你一个单链表的头节点,请反转链表,并返回新的链表 eg: 1,2,3,4,5--->5,4,3,2,1 //反转链表 struct ListNode* reverseList(struct ListNode* head) {//定义三个变量struct ListNode* n1, * n2, * n3;n1 NULL;n2 head;n3 head->n…

鸿蒙开发之ArkTS 基础九 枚举类型

枚举把变量固定在特定的范围内 枚举的语法: enum 枚举名字 { 常量1 值1, 常量1 值1, 常量1 值1, ... } 定义具体如下: 使用具体如下:

centos更改静态ip

点击网络和internet设置 点击更改适配器 、点击属性

【C++题目】1.日期差值

日期差值 题目&#xff1a; 链接&#x1f517;&#xff1a;日期差值 代码&#xff1a; #include <iostream> using namespace std; /* *思路&#xff1a; * 1. 分别求出每一个日期与0000年0月1日距离的天数 * 2. 两个距离天数相减即可得到两个日期相差的天数 *///平年…