python-opencv图像处理-腐蚀和膨胀

17.python-opencv图像处理-腐蚀和膨胀

第一章 python-opencv-图片导入和显示
第二章 python-opencv图像简单处理
第三章 python-opencv图像mask掩膜处理
第四章 python-opencv图像马赛克
第五章 python-opencv人脸马赛克
第六章 python-opencv人脸检测
第七章 python-opencv图像张贴
第八章 python-opencv轮廓绘制
第九章 python-opencv边缘检测
第十章 python-opencvpython-opencv边缘检测与人脸检测应用
第十一章 python-opencv直方图绘制与直方图均衡
第十二章 python-opencv图像傅里叶变换
第十三章 python-opencv图像的高通滤波和低通滤波
第十四章 python-opencv视频中的人脸检测
第十五章 python-opencv视频人脸检测和保存
第十六章 python-opencv使用摄像头实时人脸检测



前言

本篇博客主要介绍如何使用python-opencv对图像进行腐蚀和膨胀图像处理。


完整代码

import numpy as np
import cv2

if __name__ == '__main__':
    
    # 加载图片,并将图片转化为灰度图像
    img = cv2.imread('./tong.jpg',flags=cv2.COLOR_BGR2GRAY)
    
    # 设置腐蚀和膨胀核
    kernel = np.ones(shape=[3,3],dtype=np.uint8)  # 通过shape=[3,3]可以改变处理效果

    # 腐蚀,由多变少,边界容易被腐蚀,去除噪声
    img1 = cv2.erode(img,kernel=kernel)

    # 膨胀,图像变粗
    img2 = cv2.dilate(img1, kernel, iterations=1)

    cv2.imshow('raw',img)  # 显示原图
    cv2.imshow('erode',img1)  # 显示腐蚀图像
    cv2.imshow('dilate2', img2)  # 显示膨胀图像
    cv2.waitKey(0)
    cv2.destroyAllWindows()

部分代码说明

腐蚀

腐蚀原理:

假设原图像中有一个前景物体,那么我们用一个结构元素去腐蚀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最小值,用这个最小值替换当前像素值。

腐蚀代码

kernel = np.ones(shape=[3,3],dtype=np.uint8)
img1 = cv2.erode(img,kernel=kernel)  # 腐蚀操作

腐蚀代码定义

erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

参数说明

src:通道数可以是任意的,但深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
. dst: 输出与 src 大小和类型相同的图像。
. kernel: 用于腐蚀的结构元素; 如果 element=Mat(),则使用 3 x 3 矩形结构元素。 可以使用#getStructuringElement 创建内核。
. anchor:锚点在元素中的位置; 默认值 (-1, -1) 表示锚点位于元素中心。
. iterations:应用侵蚀的次数。
. borderType: 像素外推方法。
. borderValue:边界值在恒定边界扩张的情况下,morphologyEx,getStructuringElement

膨胀

膨胀原理

膨胀原理正好与腐蚀原理相反

假设原图像中有一个前景物体,那么我们用一个结构元素去膨胀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最大值,用这个最大值替换当前像素值。

膨胀代码

kernel = np.ones(shape=[3,3],dtype=np.uint8)
img2 = cv2.dilate(img1, kernel, iterations=1)

膨胀代码定义

dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

参数说明

src:通道数可以是任意的,但深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
. dst: 输出与 src 大小和类型相同的图像。
. kernel: 用于腐蚀的结构元素; 如果 element=Mat(),则使用 3 x 3 矩形结构元素。 可以使用#getStructuringElement 创建内核。
. anchor:锚点在元素中的位置; 默认值 (-1, -1) 表示锚点位于元素中心。
. iterations:应用侵蚀的次数。
. borderType: 像素外推方法。
. borderValue:边界值在恒定边界扩张的情况下,morphologyEx,getStructuringElement

结果展示

腐蚀结果

腐蚀后消除了原图中的噪点,但是“3”字体变细。

在这里插入图片描述

膨胀结果

膨胀处理后又将“3”字体变为原来大小。

在这里插入图片描述

  • 7
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python-opencv品质检测算法可以分为两类:基于图像处理技术和基于机器学习技术。 1. 基于图像处理技术的品质检测算法: (1) 图像去噪算法: 例如高斯滤波、中值滤波、双边滤波等,可以去除图像中的噪声。 (2) 图像增强算法: 例如直方图均衡化、自适应直方图均衡化、拉普拉斯算子增强等,可以增强图像的亮度和对比度。 (3) 边缘检测算法: 例如Sobel算子、Canny算子等,可以检测图像中的边缘。 (4) 形态学处理算法: 例如膨胀腐蚀、开运算、闭运算等,可以去除图像中的小噪点和孔洞。 (5) 特征提取算法: 例如颜色直方图、纹理特征、形状特征等,可以提取图像的特征信息。 2. 基于机器学习技术的品质检测算法: (1) 支持向量机(SVM)算法: SVM算法可以通过训练数据集,学习到一种分类模型,用于分类任务。 (2) 决策树算法: 决策树算法可以通过训练数据集,学习到一种分类模型,用于分类任务。 (3) 随机森林算法: 随机森林算法是一种集成学习算法,它可以通过多个决策树模型的投票来进行分类任务。 (4) 深度学习算法: 深度学习算法可以通过深度神经网络模型,学习到一种分类模型,用于分类任务。 以上是常用的python-opencv品质检测算法,您可以根据具体需求选择合适的算法进行实现。如果您还有其他问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值