精华内容
下载资源
问答
  • opencv的图像处理 开闭运算对二值图的处理 使其更加清晰
  • 使用OpenCV3.1.0实现图像膨胀、腐蚀、开闭运算
  • 开闭运算 开运算:先腐蚀,再膨胀。一般用来去除物体外边的毛刺。 闭运算:先膨胀,再腐蚀。一般用来去掉物体内部缺陷。 一个小例子: import cv2 import numpy as np if __name__ == "__main__": ...

    一. 基础铺垫

              图像的开闭运算是在图像膨胀腐蚀的基础上得到的,图像膨胀腐蚀可参考:膨胀与腐蚀

              通俗理解:膨胀即"增肥", 腐蚀即"减肥"。

    二. 开闭运算

             开运算:先腐蚀,再膨胀。一般用来去除物体外边的毛刺。

             闭运算:先膨胀,再腐蚀。一般用来去掉物体内部缺陷。

             一个小例子:

    import cv2
    import numpy as np
    
    
    if __name__ == "__main__":
        img_mask = cv2.imread("test.jpg")
    
        # 执行两次开操作(先腐蚀后膨胀),去掉毛刺
        kernel1 = np.ones((80,80), dtype=np.uint8)
        mask = cv2.morphologyEx(img_mask, cv2.MORPH_OPEN, kernel1, 2)
    
        # 执行两次闭操作(先膨胀后腐蚀),去掉内部缺陷
        kernel2 = np.ones((20,20), dtype=np.uint8)
        mask2 = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel2, 2)
    
        res = np.hstack([img_mask, mask, mask2])
        cv2.imwrite("res.jpg", res)

               res.jpg的结果如下:

     

    展开全文
  • opencv笔记—开闭运算

    2021-03-18 22:20:03
    写在前头:运算和闭运算并不是相互可逆的。 运算: 操作流程:开运算是先腐蚀后膨胀 作用:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像 闭运算: 具体操作:是先膨胀后腐蚀 ...

    写在前头:开运算和闭运算并不是相互可逆的。

    开运算:

    • 操作流程:开运算是先腐蚀后膨胀
    • 作用:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像
      在这里插入图片描述

    闭运算:

    • 具体操作:是先膨胀后腐蚀
    • 作用:是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域
      在这里插入图片描述方法调用:
    cv.morphologyEx(要处理的图像, cv.MORPH_OPEN/cv.MORPH_CLOSE,核结构 kernel)
    

    具体代码:

    import numpy as np
    import cv2 as cv
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei']      # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False        # 用来正常显示负号
    
    # 载入图片
    img0 = cv.imread("img/img4.png")
    img1 = cv.imread("img/img5.png")
    
    # 创建核结构
    kernel = np.ones((10,10),np.uint8)
    
    # 图像开闭运算
    # 开运算:消除噪点,去除小的干扰块,不影响原来的图像
    cvOpen = cv.morphologyEx(img0,cv.MORPH_OPEN,kernel)
    # 闭运算:消除/闭合物体里面的孔洞,可以填充闭合区域
    cvClose = cv.morphologyEx(img1,cv.MORPH_CLOSE,kernel)
    
    # 图像展示
    fig, axes = plt.subplots(nrows=2,ncols=2,figsize=(10,8))
    axes[0,0].imshow(img0)
    axes[0,0].set_title("原图")
    axes[0,1].imshow(cvOpen)
    axes[0,1].set_title("开运算结果")
    axes[1,0].imshow(img1)
    axes[1,0].set_title("原图")
    axes[1,1].imshow(cvClose)
    axes[1,1].set_title("闭运算结果")
    plt.show()
    

    运行结果:
    在这里插入图片描述cv小白的笔记,只是笔记,请大佬指点

    展开全文
  • 如果您觉得本文不错,帮忙点赞哦! 一. 图像形态学处理 —— 膨胀和腐蚀 图解图像腐蚀和膨胀 ↑ 二. 运算与闭运算: ... 运算:先腐蚀后膨胀,能够消除... 图解图像运算与闭运算 ↑ 为什么有了膨胀、腐蚀...

    如果您觉得本文不错,帮忙点赞哦!


    一. 图像形态学处理 —— 膨胀和腐蚀

                    图解图像腐蚀和膨胀 ↑


    二. 开运算与闭运算:

        开运算:先腐蚀后膨胀,能够消除图像区域外的小白点(噪声)。

        闭运算:先膨胀后腐蚀,能够消除图像区域内的小黑点(噪声)。

                    图解图像开运算与闭运算 ↑

        为什么有了膨胀、腐蚀还要开运算闭运算呢?其实开闭运算最重要的一点就是,可以保持物体原有大小。然后一个是消除物体外部噪声(开运算)的另一个是增强物体之间连接点(闭运算)的。


    三. python实现开运算和闭运算:

    import numpy as np
    # Morphology Dilate
    def Morphology_Dilate(img, Dil_time=1):
    	H, W = img.shape
    
    	# kernel
    	MF = np.array(((0, 1, 0),
    				(1, 0, 1),
    				(0, 1, 0)), dtype=np.int)
    
    	# each dilate time
    	out = img.copy()
    	for i in range(Dil_time):
    		tmp = np.pad(out, (1, 1), 'edge')
    		for y in range(1, H):
    			for x in range(1, W):
    				if np.sum(MF * tmp[y-1:y+2, x-1:x+2]) >= 255:
    					out[y, x] = 255
    
    	return out
    
    
    # Morphology Erode
    def Morphology_Erode(img, Erode_time=1):
    	H, W = img.shape
    	out = img.copy()
    
    	# kernel
    	MF = np.array(((0, 1, 0),
    				(1, 0, 1),
    				(0, 1, 0)), dtype=np.int)
    
    	# each erode
    	for i in range(Erode_time):
    		tmp = np.pad(out, (1, 1), 'edge')
    		# erode
    		for y in range(1, H):
    			for x in range(1, W):
    				if np.sum(MF * tmp[y-1:y+2, x-1:x+2]) < 255*4:
    					out[y, x] = 0
    
    	return out
    
    # Morphology Closing
    def Morphology_Closing(img, time=1):
    	out = Morphology_Dilate(img, Dil_time=time)
    	out = Morphology_Erode(out, Erode_time=time)
    
    	return out
    
    
    # Opening morphology
    def Morphology_Opening(img, time=1):
    	out = Morphology_Erode(img, Erode_time=time)
    	out = Morphology_Dilate(out, Dil_time=time)
    
    	return out

    四. 开闭运算的效果:

                    原图(左)、开运算(中)、闭运算(右) ↑

        可以看到,图像开运算,消除了图像外部的噪声,图像闭运算,连通了更多的图像区域。


    五. 参考内容:

        ① https://www.cnblogs.com/wojianxin/p/12542459.html

        ② https://www.jianshu.com/p/d1820f223fe4


    六. 版权声明:

        未经作者允许,请勿随意转载抄袭,抄袭情节严重者,作者将考虑追究其法律责任,创作不易,感谢您的理解和配合!

    展开全文
  • OpenCV中的开闭运算

    2021-02-20 14:23:51
    OpenCV中的开闭运算 代码实现: import cv2 import numpy as np #开闭运算 #1.开运算:先腐蚀后膨胀 #一些很小的连通区域可能在腐蚀过后就没了,因此,可以去除孤立区域。较大的连通区域的边缘会被核给平滑。 #删除...

    OpenCV中的开闭运算

    代码实现:

    import cv2
    import numpy as np
    #开闭运算
    #1.开运算:先腐蚀后膨胀
    #一些很小的连通区域可能在腐蚀过后就没了,因此,可以去除孤立区域。较大的连通区域的边缘会被核给平滑。
    #删除小的干扰块,包括线形干扰
    img = cv2.imread('openandclose.png')
    img = cv2.medianBlur(img,5)
    cv2.imshow('source',img)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
    cv2.imshow('binary',binary)
    #定制内核,第一个参数为内核形状,cv2.MORPH_RECT为矩形
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(8,8))
    open = cv2.morphologyEx(binary,cv2.MORPH_OPEN,kernel=kernel)
    cv2.imshow('open',open)
    cv2.waitKey()
    #2.闭运算:先膨胀后腐蚀
    #这样能够去除连通区域内部的空洞,通过膨胀把空洞填充,然后再腐蚀,让其还原连通区域大小。
    #填补闭合形状
    img = cv2.imread('openandclose.png')
    img = cv2.medianBlur(img,5)
    cv2.imshow('source',img)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
    cv2.imshow('binary',binary)
    #定制内核,第一个参数为内核形状,cv2.MORPH_RECT为矩形
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
    close = cv2.morphologyEx(binary,cv2.MORPH_CLOSE,kernel=kernel)
    cv2.imshow('close',close)
    cv2.waitKey()
    

    运行结果:
    在这里插入图片描述

    展开全文
  • 在理解开闭运算之前,需要先了解腐蚀和膨胀运算。 一、 腐蚀和膨胀 腐蚀和膨胀是对像素值大的部分而言的,即高亮白部分而不是黑色部分。 1. 腐蚀 ● 腐蚀(eroded):腐蚀是图像中的高亮部分被腐蚀掉,领域缩减,...
  • 其基本的运算包括:腐蚀和膨胀、运算和闭运算、图像顶帽运算和图像底帽运算、骨架抽取、形态学梯度、Top-hat变换等。万字长文整理,希望对您有所帮助。该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解...
  • MatLab程序。 C++实现。 实现对二值图像进行腐蚀、膨胀、/闭运算。 腐蚀分水平、垂直、全方位。 膨胀分水平、垂直、全方位。 能保存处理后的图,以及将处理后的图与原图进行对比。
  • %函数imopen和imclose的应用 f=imread('liantongyu.png'); subplot(2,2,1),imshow(f),title('原图像') se=strel('square',20);...subplot(2,2,3),imshow(fc),title('闭运算后的图像') foc=imclose
  • RoboMaster视觉教程OpenCV(四)开闭运算 文章目录RoboMaster视觉教程OpenCV(四)开闭运算一 Open CV开运算1.1 代码解析namewindow()二 Open CV闭运算2.1 代码解析clock()2.2 软件帧率求解方法2.3 硬件帧率与软件...
  • 形态学运算:对区域先进行腐蚀操作,然后对腐蚀的结果,再进行膨胀操作,称为...形态学闭运算:对区域进行膨胀操作,然后对膨胀的结果,再进行腐蚀操作,称为闭运算闭运算的特点:具有与膨胀相似的特点,但...
  • 图像开闭运算

    2018-11-11 21:51:10
    二值图像腐蚀操作属于图像形态学的范畴,形态学运算是只针对二值图像进行,并依据数学形态学(Mathermatical Morphogy)集合论方法发展起来的数字图像处理方法,它主要包括腐蚀,膨胀,,击中,击不中等。...
  • python 图像开闭运算

    千次阅读 2017-11-07 21:54:35
    运算和闭运算就是将腐蚀和膨胀按照一定的次序进行处理。但这两者并不是可逆的,即先后闭并不能得到原先的图像。 闭运算用来连接被误分为许多小块的对象,而运算用于移除由图像噪音形成的斑点。 闭运算操作...
  • 【OpenCV】腐蚀、膨胀及其开闭运算

    千次阅读 2019-02-03 20:30:32
    简单地介绍了腐蚀、膨胀及其开闭运算的基本概念,使用一个典型的例子示范了该处理方法的应用场合。(附代码)
  • 开闭运算、击中击不中变换
  • OpenCV:图像开闭运算

    2019-10-14 11:44:05
    import cv2 import numpy as np #读取图片 src = cv2.imread('edge2.jpg', cv2.IMREAD_UNCHANGED) #设置卷积核 ...#图像闭运算 result = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel) # 图...
  • 掌握二值图像的腐蚀、膨胀、运算、闭运算等常见的形态学方法python,用jupyterlab 文件写的
  • 主要介绍了opencv 形态学变换(运算,闭运算,梯度运算),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • *开运算:先对区域进行腐蚀操作,然后再进行膨胀操作 *开运算特点:防止腐蚀过度,能够很好的保持区域的形状 ...*灰度图像的开闭运算: 开:gray_opening_rect() 闭:gray_closing_rect() 例: read_image (Imag
  • 开闭运算操作的简单应用

    千次阅读 2017-05-31 10:32:19
    应用背景:在绝大部分的数字图像中,都存在各种各样的噪声,去除噪声的方法有很多,这里介绍形态学方法的开闭运算操作来去除噪声。
  • 本代码主要介绍形态学滤波的作用,其中基础滤波方式为:腐蚀与膨胀。后续的运算、闭运算、形态学梯度、顶帽、黑帽都是结合两者的不同使用方式。
  • C语言二值图的腐蚀膨胀及开闭运算

    千次阅读 2019-06-14 09:13:49
    纯C,形态学基本算法实现:腐蚀、膨胀、运算、闭运算
  • 1.运算 形态学运算操作能去除噪声及平滑目标边界等功能,其定义为: (先腐蚀后膨胀) ...形态学闭运算操作能填充目标区域内的离散小空洞和分散部分,其定义为: 其主要作用是排除小型黑洞(黑色...
  • python opencv 实现开闭运算

    千次阅读 2017-12-08 17:33:24
    涉及到的函数为erode 与dilate:import cv2 import matplotlib.pyplot as plt size = 11 kernel = np.ones((size, size), dtype=np.uint8) img_erosion = cv2.erode(img, kernel, iterations=1) ...
  • 提出了一种基于形态学开闭运算和梯度优化的分水岭算法的目标检测方法。该方法首先利用形态学开闭运算对原始图像进行平滑处理,再对梯度图像进行阈值优化,去除过多的区域极小值,然后利用分水岭分割算法检测目标,...
  • OpenCV 开闭运算

    2021-04-24 12:57:38
    闭运算运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。 cv.morphologyEx(img, op, kernel) img: 要处理的图像 op: 处理方式:若进行运算,则设为cv.MORPH_OPEN,...
  • 通过形态学过滤图片中的噪声点 ...下图左上角是语义分割的结果(这里是二分类,多分类类似), 分别使用腐蚀,膨胀,运算,闭运算,运算+闭运算对原始结果进行了处理 处理前 处理后 Eroded 腐蚀: 用来...
  • 膨胀和腐蚀运算的问题: 边缘形状发生了变化,膨胀发生了扩张,腐蚀发生了收缩 目标物体变形,对识别时的特征提取会...闭运算 先膨胀再腐蚀的结果并不是恢复原状,而是填充小的裂缝、孔隙,且不影响形状. 效果: ...
  • 08开闭运算

    2020-05-04 11:37:18
    一. 图像开运算 #开运算(img) = 膨胀( 腐蚀(img) ) import cv2 import numpy as np #读取图片 src = cv2.imread('C:/Users/31035/Desktop/yifei/08.jpg', cv2.IMREA...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,989
精华内容 11,195
关键字:

开闭运算