OpenCV形态学

news2024/10/6 18:33:07

什么事形态学处理
基于图像形态进行处理的一些基本方法;
这些处理方法基本是对二进制图像进行处理;
卷积核决定着图像出来后的效果。

一 图像二值化

什么是二值化
将图像的每个像素变成两种值,如0,255.

全局二值化。

局部二值化。

threshold API

threshold(img,thresh,maxVal,type)
img:图像,最好是灰度图
thresh:阈值
maxVal:超过阈值,替换成maxVal
THRESH_BINARY和THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO和THRESH_TOZERO_INV
import cv2

import numpy as np

img=cv2.imread('./2037551.jpg')

img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,dst=cv2.threshold(img,180,255,cv2.THRESH_BINARY)

cv2.imshow('img',img)
cv2.imshow('gray',img1)
#cv2.imshow('bin',bin)

cv2.waitKey(0)

二 阈值类型

thresholdType
在这里插入图片描述

三 自适应阈值

由于光照不均匀以及阴影的存在,只有一个阈值会使得在阴影处的白色被二值化成黑色。

adaptiveThresholdAPI

adaptiveThreshold(img,maxVal,adaptiveMethod,type,blockSie,C)
adaptiveMethod:计算阈值的方法
blockSize:邻近区域的大小
C:常量,应从计算出的平均值或加权平均值中减去;
adaptiveMethod
计算阈值的方法
ADAPTIVE_THRESH_MEAN_C:计算领近区域的平均值
ADAPIVE_THRESH_GAUSSIAN_C:高斯窗口加权平均值
Type:THRESH_BINARY,THRESH_BINARY_INV
import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')
img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

dst=cv2.adaptiveThreshold(img1,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                              cv2.THRESH_BINARY_INV,11,0)

print(dst.shape)

cv2.imshow('img',img)
cv2.imshow('img1',img)
cv2.imshow('dst',dst)

cv2.waitKey(0)

四 腐蚀

在这里插入图片描述

1 腐蚀运算在这里插入图片描述

2 腐蚀效果

在这里插入图片描述

3 腐蚀API

erode(img,kernel,iterations=1)
import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')

kernel=np.ones((3,3),np.uint8)

dst=cv2.erode(img,kernel,iterations=1)

cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)

六 获取形态学卷积核

卷积核的类型

getStructuringElement(type,size)
Size值为:3:3)、(5,5...
MORPH_RECT
MORPH_ELLIPSE
MORPH_CROSS

七 OPenCV 膨胀

膨胀运算
在这里插入图片描述

1 膨胀效果

在这里插入图片描述

2 膨胀API

dilate(img,kernel,iterations=1)

问题
如果是白底黑字,进行腐蚀与膨胀后会怎样?
卷积核是否可以设置为全0?

八 开运算

开运算=腐蚀+膨胀

开运算效果
在这里插入图片描述
开运算API

morphologyEx(img,EORPH_OPEN,kernel)

import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(7,7))

#dst=cv2.erode(img,kernel,iterations=1)

#膨胀
#dst1=cv2.dilate(img,kernel,iterations=1)

dst1=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
#cv2.imshow('dst',dst)
cv2.imshow('dst1',dst1)
cv2.waitKey(0)

九 闭运算

闭运算效果
在这里插入图片描述
闭运算API

morphology(img,MORPH_CLOSE,kernel)

十 形态学剃度

梯度=原图-腐蚀

梯度效果图

梯度API

morphologyEx(img,MORPH_GRADIENT,kernel)
import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(7,7))

#梯度
dst1=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

cv2.imshow('img',img)
cv2.imshow('dst',dst1)
cv2.waitKey(0)

十一 顶帽运算

顶帽=原图-开运算

顶帽效果图
在这里插入图片描述
顶帽API

morphologyEx(img,MORPH_TOPHAT,kernel)
import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))

#顶帽
dst1=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

cv2.imshow('img',img)
cv2.imshow('dst',dst1)
cv2.waitKey(0)

十二 黑帽运算

黑帽=原图-闭运算

黑帽效果图
在这里插入图片描述
黑帽API

morphologyEx(img,MORPH_BLACKHAT,kernel)
import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))

#顶帽
dst1=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

cv2.imshow('img',img)
cv2.imshow('dst',dst1)
cv2.waitKey(0)

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

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

相关文章

小学奥数-图像找规律之招聘测评题

文章目录 长得差不多平移(1)(2) 旋转规律(1) 翻转规律 长得有点不一样叠加 参考 比如腾讯给他投简历之后会发一个在线测评,这些题目有和公务员考试很像的 长得差不多 几张图长得差不多的时候&a…

TCP/IP协议深入解析,初学者必看!

简介 在信息技术飞速发展的今天,网络已成为人类社会不可或缺的部分。实现网络中计算机相互通信的关键之一便是TCP/IP协议。作为互联网的基础,TCP/IP协议确保了全球范围内的数据交换和信息共享。 TCP/IP(传输控制协议/网际协议)是…

大数据实训项目(小麦种子)-01、VirtualBox安装与Centos7系统安装

文章目录 前言项目介绍项目任务目标一、VirtualBox安装1.1、认识VirtualBox1.2、VirtualBox的下载安装 二、VirtualBox安装Centos7系统2.1、VirtualBox安装Centos72.2、Centos7配置静态IP地址2.3、Centos7环境基础配置 三、Windows安装FinalShell及连接Centos73.1、FinalShell下…

神经网络学习2

张量(Tensor)是深度学习和科学计算中的基本数据结构,用于表示多维数组。张量可以看作是一个更广义的概念,涵盖了标量、向量、矩阵以及更高维度的数据结构。具体来说,张量的维度可以是以下几种形式: 标量&am…

环保评A的意义与价值

环保评A,这个看似简单的称谓,背后却蕴藏着深厚的环保理念和实践标准。在当今社会,环保已经成为一项全球性的议题,各国都在努力推动绿色发展,实现可持续发展目标。那么,环保评A究竟是全国性的认证还是地方性…

在VMware中安装CentOS7(超详细的图文教程)

1、CentOS7的下载 官网下载地址:Download。 进入CentOS下载官网,找到64位的CentOS7版本。 点进来后,发现它给我们列出了所在区域可用镜像源(可以说是非常的良心的),我们随便选择一个,这里以阿…

Git使用-gitlab上面的项目如何整到本地的idea中

场景 一般我们在开发项目或者接手某个项目时,基本都要接触Git,比如上传项目代码,下载同事给你的交接代码等等。 这是一个基本功,小小整理一下日常操作中的使用。 第一步:在 GitLab 上找到你要克隆的项目,复…

C#传值参数 -1值类型 -2引用类型

传值参数 -1值类型 -2引用类型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //传值参数-1、值类型 2、引用类型 namespace PamatetersExample {class Program{static void Main(string[] args){St…

【odoo15】前端自定义模态弹窗

概要 在odoo15或者在15之前,odoo前端的owl框架还没完全替换当前前端框架的时候,我们很多时候都是用js或者jq来直接操作dom,那么我们如果需要在前端用到一个模态弹窗,可以怎么解决呢? 方法1 直接用js原生的模态弹窗&am…

CMU最新论文:机器人智慧流畅的躲避障碍物论文详细讲解

CMU华人博士生Tairan He最新论文:Agile But Safe: Learning Collision-Free High-Speed Legged Locomotion 代码开源:Code: https://github.com/LeCAR-Lab/ABS B站实际效果展示视频地址:bilibili效果地址 我会详细解读论文的内容,让我们开始吧…

基于Python+OpenCV+SVM车牌识别系统(GUI界面)【W3】

简介: 随着交通管理的日益复杂化和智能化需求的增加,车牌识别系统在安防、智慧交通管理等领域中扮演着重要角色。传统的车牌识别系统主要基于图像处理和模式识别技术,随着计算机视觉技术的发展,基于Python、OpenCV和机器学习算法的…

用于以太网PLC的跨网段无线WIFI通讯,IP地址转换

产品型号:NET50-NAT-W 使用范围:用于以太网PLC的跨网段无线WIFI通讯 产品介绍 工业通讯桥接器(NET50-NAT-W)用于以太网设备(PLC,数控,机器人等)的IP地址跨网段转换和无线WIFI通讯。…

Java | Leetcode Java题解之第151题反转字符串中的单词

题目: 题解: class Solution {public String reverseWords(String s) {StringBuilder sb trimSpaces(s);// 翻转字符串reverse(sb, 0, sb.length() - 1);// 翻转每个单词reverseEachWord(sb);return sb.toString();}public StringBuilder trimSpaces(S…

去掉eslint

1、在vue.config.js文件里加上下面的代码,然后重启就可以了! 2、vue.config.js文件代码: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,lintOnSave: false })

小数二分个人见解

小数二分 小数二分题目 小数二分 整数二分 是找边界点,而小数二分找的是 近似值。 整数二分是在一个整型数组当中 查找,而小数二分是在数轴中 查找,都是每次可以排除一半的区间,只不过小数二分中while循环内的结束条件和整数二分…

酒店民宿小程序开发,旅游业发展下的商业机遇

随着人们生活水平的日益提高,对各种娱乐方式的需求在不断上升,其中旅游成为了大众的“新宠”。旅游业的快速发展也推动了酒店民宿的蓬勃发展,打造一个便捷高效的线上酒店民宿小程序成为了至关重要的发展趋势! 如今,不…

vulnhub靶场-xxe打靶教程

目录 靶机导入 信息收集 发现IP 端口扫描 目录扫描 漏洞利用 靶机下载地址:XXE Lab: 1 ~ VulnHub 靶机导入 导入虚拟机 开启虚拟机 信息收集 发现IP arp-scan -l 发现靶机IP是192.168.202.150 端口扫描 使用nmap进行扫描 nmap -sS -A 192.168.202.150 …

SJ703安全帽防静电测试仪

一、仪器用途 专门检测安全帽防静电性能。 二、仪器特征 1、携带使用轻便、量程宽广、读数准确,耐震性强等卓越优点 2、超上限时显示‘1’提示和低于下限时声响报警。 3、电池欠压时显示欠压符号“←”提示。 4、交流或直流(电池)供电任…

OpenCV滤波器

滤波的作用 一副图像通过滤波器得到另一副图像;其中滤波器又称为卷积核,滤波的过程称为卷积。 图像卷积效果图 卷积的过程 一 卷积的几个基本概念 1 卷积核的大小 卷积核一般为奇数,如3X3,5X5,7X7等。 一方面是增加padding的原因。 另一…

TCP相关细节

1. 常用TCP参数 1.1 ReceiveBufferSize ReceiveBuffersize指定了操作系统读缓冲区的大小, 默认值是8192(如图5-10 所示)。在第4章的例子中,会有"假设操作系统缓冲区的长度是8" 这样的描述,可通过socket.ReceiveBufferSize 8 实现。当接收端缓冲区满了的时…