`
huangyongxing310
  • 浏览: 496245 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Python OpenCV 形态学操作(腐蚀膨胀,开运算和闭运算)

 
阅读更多
Python OpenCV 形态学操作(腐蚀膨胀,开运算和闭运算)


过滤器生成
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))  # 椭圆结构
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))  # 十字结构
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))  # 矩形结构



腐蚀膨胀开、闭运算
# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2


def main():
    # img = cv2.imread("test001.jpg") #读取图片
    # cv2.imshow("1",img) #显示图片
    # cv2.waitKey(10000)# 延时10s

    # image = Image.open("test002.png")
    # img = image.convert('1')  # 转化为灰度图

    # img.show()

    img = cv2.imread("test002.png", 0)
    kernel = np.ones((3, 3), np.uint8)  # 全为1的过滤数组
    print(kernel)

    # 腐蚀(去白小点)
    img2 = cv2.erode(img, kernel)  # 腐蚀
    cv2.imshow('canny', img2)
    cv2.waitKey(2000)
    # cv2.waitKey()

    # 膨胀(去黑小点)
    img3 = cv2.dilate(img, kernel)  # 膨胀
    cv2.imshow('canny', img3)
    cv2.waitKey(2000)
    # cv2.waitKey()

    # 先腐蚀后膨胀叫开运算(因为先腐蚀会分开物体,这样容易记住),其作用是:分离物体,消除小区域。
    opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)  # 开运算
    cv2.imshow('canny', opening)
    cv2.waitKey(2000)

    # 闭运算则相反:先膨胀后腐蚀(先膨胀会使白色的部分扩张,以至于消除/"闭合"物体里面的小黑洞,所以叫闭运算)
    closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)  # 闭运算
    cv2.imshow('canny', closing)
    cv2.waitKey(2000)


if __name__ == '__main__':
    main()



形态学梯度
# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2

def main():
    # img = cv2.imread("test001.jpg") #读取图片
    # cv2.imshow("1",img) #显示图片
    # cv2.waitKey(10000)# 延时10s

    # image = Image.open("test002.png")
    # img = image.convert('1')  # 转化为灰度图

    # img.show()

    img = cv2.imread("test002.png", 0)
    kernel = np.ones((3, 3), np.uint8)  # 全为1的过滤数组
    print(kernel)

    # 形态学梯度:膨胀图减去腐蚀图,dilation - erosion,这样会得到物体的轮廓:
    gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)  # 形态学梯度
    cv2.imshow('canny', gradient)
    cv2.waitKey(2000)


if __name__ == '__main__':
    main()




顶帽黑帽
# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2


def main():
    # img = cv2.imread("test001.jpg") #读取图片
    # cv2.imshow("1",img) #显示图片
    # cv2.waitKey(10000)# 延时10s

    # image = Image.open("test002.png")
    # img = image.convert('1')  # 转化为灰度图

    # img.show()

    img = cv2.imread("test002.png", 0)
    kernel = np.ones((3, 3), np.uint8)  # 全为1的过滤数组
    print(kernel)

    # 顶帽:原图减去开运算后的图
    tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
    cv2.imshow('canny', tophat)
    cv2.waitKey(2000)

    # 黑帽:闭运算后的图减去原图
    blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
    cv2.imshow('canny', blackhat)
    cv2.waitKey(2000)


if __name__ == '__main__':
    main()


分享到:
评论

相关推荐

    OpenCV实现膨胀、腐蚀、开闭运算

    本文将深入探讨如何利用OpenCV3.1.0来实现图像的膨胀、腐蚀以及开闭运算,这些都是形态学图像处理中的基本操作,对于图像去噪、分割和特征提取有着重要作用。 首先,我们要理解这些术语的基本概念: 1. **膨胀...

    图像的开运算和闭运算_闭运算_开运算_

    在Python的OpenCV库中,可以使用`cv2.erode()`和`cv2.dilate()`函数分别进行腐蚀和膨胀操作,然后通过组合这两个操作来实现开运算和闭运算。例如: ```python import cv2 # 加载图像 img = cv2.imread('image.png'...

    掌握二值图像的腐蚀、膨胀、开运算、闭运算等常见的形态学方法python

    掌握二值图像的腐蚀、膨胀、开运算、闭运算等常见的形态学方法python,用jupyterlab 文件写的

    形态学开闭运算平滑图像

    在图像处理领域,形态学运算是一种非常重要的技术,主要用于处理图像的几何形状。"形态学开闭运算平滑图像"这个标题所涉及的核心知识点就是形态学处理中的开运算和闭运算,以及它们在平滑图像、填充孔洞方面的应用。...

    OpenCV计算机视觉学习(5)——形态学处理(腐蚀膨胀,开闭运算,礼帽黑帽,边缘检测) - 战争热诚 - 博客园1

    在OpenCV库中,形态学处理包括腐蚀、膨胀、开运算、闭运算、顶帽和黑帽算法以及边缘检测。下面将详细介绍这些概念。 ### 1. 定义结构元素 结构元素是形态学操作的基础,它是一个小的二维矩阵,用于定义在图像上...

    图像腐蚀、膨胀、开、闭运算

    在图像处理领域,"图像腐蚀、膨胀、开、闭运算"是重要的形态学操作,主要用于图像分割、噪声去除和形状分析。这些操作基于数学形态学理论,是图像处理中的基本工具,尤其在二值图像(黑白图像)处理中广泛应用。 1....

    OpenCV-Python图像运算变换处理:开运算和闭运算以及不同核矩阵的影响分析.rar

    本资料主要探讨了两个关键的形态学操作:开运算和闭运算,以及不同核矩阵对这些运算的影响。形态学操作是图像处理领域的重要工具,主要用于噪声消除、边缘检测和形状分析。 首先,开运算是一种组合操作,由腐蚀...

    09.形态学之图像开运算、闭运算、梯度运算.pdf

    本文详细介绍了数学形态学中的三个基本概念:开运算、闭运算和梯度运算,并探讨了它们在图像处理中的应用场景以及如何利用OpenCV库在Python中实现这些操作。通过理解和掌握这些基本概念和技术,我们可以更有效地进行...

    opencv膨胀与腐蚀实例下载

    开运算和闭运算分别是先腐蚀后膨胀,以及先膨胀后腐蚀的操作组合,常用于去除噪声和保留大物体。开运算有助于消除小颗粒噪声,闭运算则有助于填补小孔洞。 **5. 形态学梯度(Morphological Gradient)** 形态学梯度...

    opencv 形态学变换(开运算,闭运算,梯度运算)

    形态学变换主要包括开运算、闭运算和梯度运算,这些操作可以帮助去除噪声,连接断开的线条,填充小孔洞,以及分离粘连的物体。接下来我们将详细探讨这些概念,并结合OpenCV库在Python中的应用。 ### 开运算 开运算...

    xingtai.rar_OpenCV形态学

    形态学操作主要包括腐蚀、膨胀、开运算、闭运算、形态学梯度、顶帽和黑帽等。下面将详细介绍这些概念: 1. **腐蚀**:腐蚀操作是用一个小结构元素(通常是矩形、圆形或椭圆形)在图像上滑动,如果该结构元素的所有...

    OpenCV-python 学习笔记 OpenCV形态学转换1

    OpenCV-Python 学习笔记:形态学转换是图像处理中的一个重要部分,它主要用于处理二值图像,尤其在噪声去除、物体分离、边缘检测等方面有显著效果。在Python中,OpenCV库提供了丰富的函数来实现这些操作。 1. **...

    Python OpenCV处理图像之滤镜和图像运算

    5. **形态学操作**:形态学操作是基于形状的图像处理技术,例如膨胀(dilation)和腐蚀(erosion)。这些操作通常用于改变图像的形状。在代码中,通过`cv.Dilate`函数可以使用特定形状的结构元素对图像进行膨胀操作...

    基于OpenCV的图像形态学处理.zip

    流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。 简单来讲,形态学操作就是基于形状的一系列图像处理操作。OpenCV 为进行图像的形 态学变换提供了快捷、方便的函数。最基本的形态学操作有两种,分别...

    二值形态学在图像处理中的应用(二)opencv实现

    在OpenCV中,可以使用`cv2.erode()`和`cv2.dilate()`函数进行腐蚀和膨胀操作,`cv2.morphologyEx()`则提供了一站式的解决方案,可以执行开运算、闭运算以及更多复杂的形态学变换。在使用这些函数时,需要指定结构...

    opencv形态学变换函数

    形态学变换主要包括腐蚀、膨胀、开运算和闭运算,这些都是图像处理的重要组成部分。 1. 腐蚀(Erosion): 腐蚀操作是通过一个结构元素(通常是小的矩形、圆形或椭圆)在图像上滑动,并用结构元素的黑色部分替换图像...

    基于OpenCV-Python的图像处理与形态学运算详解(包含详细的完整的程序和数据)

    内容概要:本实战教程详细讲解了OpenCV-Python中的图像处理方法,特别是各种形态学操作,如膨胀、腐蚀、开闭运算等,并提供了完整的代码示例。 适合人群:有一定Python编程经验并对图像处理有兴趣的学习者和技术人员...

    基于Python OpenCV实现的图片文字识别 共7页.pdf

    - **形态学开运算**:结合腐蚀和膨胀操作,去除小的噪声点。 - **自适应阈值处理**:利用 `adaptiveThreshold` 函数,根据图像局部特性自动设置阈值,实现二值化。 **3. 利用 Pytesser 进行文字识别** Pytesser ...

    09.形态学之图像开运算、闭运算、梯度运算1

    总结,本文介绍了Python OpenCV库中关于图像形态学的三个基本操作:开运算、闭运算和梯度运算。开运算和闭运算常用于噪声消除和形状修复,梯度运算则用于边缘检测。这些操作对于图像预处理和特征提取至关重要,特别...

Global site tag (gtag.js) - Google Analytics