OpenCV:图像的腐蚀和膨胀

图像的腐蚀和膨胀实际上是利用卷积进行计算,首先导包:

import numpy as np
import cv2
import matplotlib.pyplot as plt
def show(image):
    plt.imshow(image)
    plt.axis(‘off‘)
    plt.show()
def imread(image):
    image=cv2.imread(image)
    image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image

然后生成一个正方形的核:

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel)

输出:

[[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]]

当然我们作运算的时候都是使用的正方形的核,这里也展示下生成椭圆核的方法:

kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(10,10))#这里生成的是椭圆
print(kernel)

生成十字形的核:

kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))#这里生成的是十字形
print(kernel)

利用卷积进行图像的腐蚀:可以使黑色的点变大

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(10,10))
ero=cv2.erode(image,kernel)
show(ero)

循环进行多次腐蚀:

show(image)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(10,10))
for i in range(2):
    ero=cv2.erode(image,kernel,iterations=i+1)
    show(ero)

图像的膨胀,使白色的点变大,用于去除图像当中的黑点:

show(image)#利用卷积将图像进行膨胀,求解的是区域最大值,腐蚀则是求解的区域最小值
dilation=cv2.dilate(image,kernel)
show(dilation)#用于去除图像当中黑色的小点

循环去除:

image=imread(‘123.jpg‘)
show(image)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(21,21))
for i in range(3):
    ero=cv2.erode(image,kernel,iterations=i+1)
    show(dilation)

下面是处理朱茵图片进行膨胀的效果:

原文地址:https://www.cnblogs.com/geeksongs/p/11105757.html

时间: 2024-10-15 02:09:42

OpenCV:图像的腐蚀和膨胀的相关文章

Opencv对图像做腐蚀和膨胀处理的结果

在数字图像处理中,图像的形态学变换占有很重要的地位.基本的形态转换就是膨胀和腐蚀,它们能实现多种功能:例如消除噪声.分割出独立的图像元素以及在图像中连接相邻的元素.当然形态学也常备用于求出图像的梯度. 一. 关键函数介绍 下面就介绍OpenCV中对图像进行二值化的关键函数 cvErode() 函数功能:对图像进行腐蚀 函数原型:void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iteratio

opencv中的腐蚀与膨胀(转)

图像腐蚀和图像膨胀是图像中两种最基本形态学操作. void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() ); void dilate( const Ma

图像的腐蚀与膨胀

数字图像处理中的形态学 转自:http://blog.csdn.net/sunny3106/archive/2007/08/15/1745485.aspx (摘自某文献,因为贴图的数目有限制,后面的公式图片没有能够上,电脑重装后文档已经找不到了,囧) 一    引言        数学形态学是一门建立在集论基础上的学科,是几何形态学分析和描述的有力工具.数学形态学的历史可回溯到19世纪.1964年法国的Matheron和Serra在积分几何的研究成果上,将数学形态学引入图像处理领域,并研制了基于

OpenCV学习笔记——腐蚀与膨胀

1.膨胀 此操作将图像 与任意形状的内核 (),通常为正方形或圆形,进行卷积. 内核 有一个可定义的 锚点, 通常定义为内核中心点. 进行膨胀操作时,将内核 划过图像,将内核 覆盖区域的最大相素值提取,并代替锚点位置的相素.显然,这一最大化操作将会导致图像中的亮区开始”扩展” (因此有了术语膨胀 dilation ). erode src: 原图像 erosion_dst: 输出图像 element: 腐蚀操作的内核. 指定形状:getStructuringElement 矩形: MORPH_R

OpenCV图像处理篇之腐蚀与膨胀

转载请注明出处:http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最基本的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算.腐蚀和膨胀的应用非常广泛,而且效果还很好: 腐蚀可以分割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现 去噪:通过低尺寸结构元素的腐蚀操作很容易去掉分散的椒盐噪声点 图像轮廓提取:腐蚀操作 图像分割 等等...(在文后给出一则简单实用膨胀操作提

图像腐蚀、膨胀、基本原理和程序实现

图像的腐蚀与膨胀 一.原理: ⑴ 图像形态学处理的概念 数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界.骨架以及凸壳,还包括用于预处理或后处理的形态学过滤.细化和修剪等.图像形态学处理中我们感兴趣的主要是二值图像. ⑵ 二值图像的逻辑运算 逻辑运算尽管本质上很简单,但对于实现以形态学为基础额图像处理算法是一种有力的补充手段.在图像处理中用到的主要逻辑运算是:与.或和非(求补),它们可以互相组合形成其他逻辑运算. ⑶ 膨胀和腐蚀 膨胀

OpenCV学习 7:图像形态学:腐蚀、膨胀

原创文章,欢迎转载,转载请注明出处 首先什么是图像形态学?额,这个抄下百度到的答案.基本思想:    用具有一定形态的结构元素去度量和提取图像中的对应形状已达到对图像分析和识别的目的,形态学图像处理表现为一种领域运算方式(这个和前面的模糊运算是一样的运算方式),效果取决于结构元素(就是前面smooth里面的核)的大小,内容以及逻辑运算的性质.看了这些定义是不是很晕,对很晕...我比较关心的是它的用途和怎么计算.    用途是:简化图像数据,保持他们基本的形状特性,并出去不相干的结构.    基本

opencv2函数学习之erode、dilate:图像腐蚀和膨胀

图像腐蚀和图像膨胀是图像中两种最基本形态学操作. void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() ); void dilate( const Ma

Qt 5.3 下OpenCV 2.4.11 开发(13)腐蚀与膨胀

默认的腐蚀与膨胀操作: #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; int main() { Mat src = imread("lena.jpg", 0); Mat