Python+opencv学习记录22:开闭操作

1.开闭操作原理

图像处理中的开闭运算是两个很重要的形态学操作,它们两个从基本的腐蚀与膨胀操作演变而来的,这些操作主要应用在二值图像的处理上,灰度图像也可以。

1.1开操作

开操作是先腐蚀,后膨胀,作用是用来消除小物体和噪点、平滑较大物体的边界的同时并不明显改变其面积,提取水平或竖直的线。

1.2闭操作

闭操作是显膨胀,后腐蚀,作用是用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积

2.开闭操作的应用

2.1开操作

其代码为:

def open_demo(image):           # 开操作
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 用大律法、全局自适应阈值方法进行图像二值化
    cv.imshow("binary_image", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 获取结构元素
    dst = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)       # 开操作
    cv.imshow("open_result", dst)

原图为:
在这里插入图片描述
可以看出原图像中有一些白色的噪点,结果开操作后:
在这里插入图片描述
由上图可以看出,小的白色噪点被消除了。

2.2闭操作

其代码为:

def close_demo(image):          # 闭操作
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("binary_image", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
    dst = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
    cv.imshow("close_result", dst)

原图为:
在这里插入图片描述
图中有很多小黑点,此时我们可以通过闭操作,将其黑色的噪声点给填充掉:
在这里插入图片描述

3.提取物体特征

开闭操作还可以被用于提取物体的一些特征,如提取图像中的横线,
其代码如下:

def open_demo(image):           # 开操作
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU) # 用大律法、全局自适应阈值方法进行图像二值化
    cv.imshow("binary_image", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 1))  # 获取结构元素
    dst = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)       # 开操作
    cv.imshow("open_result", dst)

获取结构元素时,我们可以改变内核大小来达到目的。
原图为:
在这里插入图片描述
经过相应的操作后:
在这里插入图片描述
除此之外,我们还可以利用开操作来提取图像中的字母,
原图为:
在这里插入图片描述
我们可以改变结构元素的内核大小,改为(3,3),得到的结果为:
在这里插入图片描述

完整代码

import cv2 as cv                # 导入opencv模块
import numpy as np              # 导入数学函数库


def open_demo(image):           # 开操作
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU) # 用大律法、全局自适应阈值方法进行图像二值化
    cv.imshow("binary_image", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 获取结构元素
    dst = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)       # 开操作
    cv.imshow("open_result", dst)


def close_demo(image):          # 闭操作
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("binary_image", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
    dst = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
    cv.imshow("close_result", dst)


print("------------hello python!------------")

src = cv.imread("D:/opencv3/image/chars.png")
cv.namedWindow("input_image", cv.WINDOW_AUTOSIZE)
cv.imshow("input_image", src)
open_demo(src)
# close_demo(src)

cv.waitKey(0)
cv.destroyAllWindows()          # 释放所有窗口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonOpenCV是一种非常流行的计算机视觉库,用于处理图像和视频数据。OpenCV(Open Source Computer Vision Library)是一个源的计算机视觉和机器学习软件库,提供了许多功能,包括图像处理、特征检测、目标跟踪、运动检测等。Python是用于编写计算机程序的高级编程语言,它易于学习,并且拥有丰富的第三方库,包括OpenCVPythonOpenCV的主要应用场景包括: 1. 图像处理:使用OpenCV可以进行各种图像处理操作,例如调整大小、裁剪、旋转、色彩空间转换、滤波等。 2. 特征检测:OpenCV提供了许多特征检测算法,如SIFT、SURF、ORB等,可用于识别图像中的关键点并提取特征描述符。 3. 目标跟踪:OpenCV提供了许多目标跟踪算法,如帧间差分法、光流法等,可用于实时跟踪视频中的运动目标。 4. 运动检测:OpenCV可以检测视频中的运动对象,例如车辆、行人等。 5. 面部识别:OpenCV可以用于面部识别,通过检测图像中的面部特征并进行匹配。 使用PythonOpenCV进行计算机视觉发的基本步骤包括: 1. 安装PythonOpenCV库:可以从官方网站下载并安装PythonOpenCV库。 2. 导入库:在Python脚本中导入OpenCV库,以便可以使用其提供的函数和方法。 3. 读取图像或视频文件:使用OpenCV的函数读取图像或视频文件,并将其加载到内存中。 4. 进行图像处理或特征检测:使用OpenCV提供的函数和方法对图像或视频进行处理或检测特征。 5. 保存结果:将处理或检测的结果保存到文件或输出到控制台。 总之,PythonOpenCV是一种强大的计算机视觉工具,可用于各种图像和视频处理任务。通过学习和掌握PythonOpenCV,您可以轻松地进行计算机视觉研究、发和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值