opencv python 图像形态学

2024-04-28 16:32
文章标签 opencv python 形态学 图像

本文主要是介绍opencv python 图像形态学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

形态学操作(morphology operators)

图像形态学操作 – 基于形状的一系列图像处理操作的合集,
主要是基于集合论基础上的形态学数学。
形态学主要针对二值图像进行处理,特别是OCR等这些处理,
还有特征提取、区域分割等也可以通过形态学的方法进行。形态学有四个基本操作:腐蚀、膨胀、开、闭。
膨胀与腐蚀是图像处理中最常用的形态学操作手段。

1)膨胀(dilate)

跟卷积操作类似,假设有图像A和结构元素B,
结构元素B在A上面移动,其中B定义其中心为锚点,
以B覆盖下A的最大像素值(偏白)替换锚点的像素,
其中B作为结构体可以是任意形状。
(与卷积不同之处,可以是线、矩阵、圆、十字等形状)

在这里插入图片描述
在这里插入图片描述

最大值(偏白)替换就是向原图边缘膨胀,白色变多,黑色变小

(2)腐蚀(erode)

腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值(偏黑)
替换锚点重叠下图像的像素值。

在这里插入图片描述二值图像与灰度图像上的腐蚀操作:
在这里插入图片描述

最小值(偏黑)替换就是向背景做了腐蚀,黑色变大,白色变小。	
import cv2
import numpy as np# 腐蚀 取最小值
def erossionDef(img):kernel = np.ones((5,5),np.uint8)erossion = cv2.erode(img,kernel,iterations=1)return erossion# 膨胀 取最大值
def dilate(img):kernel = np.ones((5, 5), np.uint8)img = cv2.dilate(img,kernel,iterations=1)return img# 开运算:先腐蚀 再膨胀
def morphOpen(img):kernel = np.ones((5, 5), np.uint8)img = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)return img# 闭运算:先膨胀 再腐蚀
def morphClose(img):kernel = np.ones((5, 5), np.uint8)img = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)return img# 梯度 = 膨胀 - 腐蚀
def gradientImg(img):kernel = np.ones((3,3), np.uint8)img = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)return img# 礼帽 = 原始输入 - 开运算结果
def topHat(img):kernel = np.ones((5, 5), np.uint8)img = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)return imgdef blackHat(img):kernel = np.ones((5, 5), np.uint8)img = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)return imgimg = cv2.imread("img1.png")# img = erossionDef(img)
# img1 = dilate(img)
# img2 = erossionDef(img)
# img3 = gradientImg(img)
#
# img = np.hstack((img,img1,img2,img3))img = blackHat(img)cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这篇关于opencv python 图像形态学的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943725

相关文章

图像配准方法之灰度信息法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lliming2006/article/details/76268727

202303青少年软件编程(Python)等级考试试卷(二级)

第 1 题 【单选题】 下列说法正确的是? ( ) A :{123: ’ a’ , ’ a’ : 123} 不是一个合法的字典 B :数字、 字符串、 列表和元组都可以作为字典的键 C :{(12, 34, ’ a’ ) : ’ a’ , ’ a’ : 5678} 是一个合法的字典 D :字典中的内容一经创建就不能再修改 正确答案:C 试题解析:数字、 字符串和元组可以作为字典的键,

opencv将frame帧保存为视频

#include "opnecv2/opencv.hpp"#include <iostream>using namespace std;using namespace cv;int main(){int c=0;VideoCapture cap(c);//调用摄像头,如果有多个摄像头,可以调整c(0,1,2,...)来选择到你想要的摄像头,if (!cap.isOpened()){ret

python导入包失败ModuleNotFoundError: No module named 'matplotlib.pyplot'; 'matplotlib' is not a package

最近在看 python,在使用matplotlib进行绘图时,提示:ModuleNotFoundError: No module named 'matplotlib.pyplot'; 'matplotlib' is not a package 怎么回事呢? matplotlib这个安装包我也安装了呀。 查资料说 有可能是多个python版本导致的,但是,我本地也只安装了3.6.1的版本。 到底怎么

深度学习与图像融合

https://blog.csdn.net/likejoey/article/details/79479160     image stitch(国外开源的图像拼接) https://blog.csdn.net/yangpan011/article/details/81387299?utm_source=blogxgwz9

再探旋转相机中的图像拼接问题

Homography 知多少? https://blog.csdn.net/heyijia0327/article/details/53782094 在ORB-SLAM初始化的时候,作者提到,如果场景是平面,或者近似平面,或者低视差时,我们能应用单应性矩阵(homography),这三种情形在我应用SVO的过程中颇有同感,打破了我对HH矩阵的固有映像,即只能用于平面或近似平面。 在学SLAM

ImportError: No module named cv2 and ubuntu下测试opencv

在安装opevncv时会出现 ImportError: No module named cv2 的错误,找不到cv2的包。这时候安装扩展包即可: pip install opencv-python     测试: Ubuntu16.04下opencv调用摄像头的程序 //配置opencv可以参考http://jingyan.baidu.com/article/14bd256e46647

opencv学习小结(1)–高斯模糊与卷积核、模糊半径

因为做的项目需要用到opencv的工具包,所以本人就开始了对opencv的各类函数进行原理上的学习,希望能够尽快的完成对opencv系统的学习。 1:什么是高斯模糊: 模糊是一种利用图像算法对源图像素色值进行重新合成的一种处理结果(当然也是近视眼就会导致模糊..xixi),而高斯模糊则是运用高斯函数(遵循数据正态分布)求出对应图像的卷积核在进行一定换算最后合成图像的一种特殊处理结果,当然其中有

python中try/except/else/finally块的一些例子

Python中的`try/except/else/finally`块可以用来捕获和处理异常,确保程序的健壮性。以下是一些使用这些块的例子: ### 基本异常捕获 ```python try:     # 尝试读取文件     with open('example.txt', 'r') as file:         data = file.read() except FileNotFound

用Python的pynput库成为按键记录高手

哈喽,大家好,我是木头左! 揭秘键盘输入:pynput库的基本介绍 无论是为了安全审计、数据分析还是创建热键操作,能够记录和处理键盘事件都显得尤为关键。这就是pynput库发挥作用的地方。pynput是一个Python库,它允许你控制和监听鼠标和键盘输入。在本节中,将探讨pynput库的基本概念,以及如何使用它来捕捉键盘事件。 安装与配置pynput 要开始使用pynput,首先需要