3.1.OpenCV技能树--二值图像处理--图像腐蚀与膨胀

news/2024/7/21 4:08:33 标签: opencv, 图像处理, 人工智能

文章目录

  • 1.文章内容来源
  • 2.图像膨胀处理
    • 2.1.图像膨胀原理简介
    • 2.2.图像膨胀核心代码
    • 2.3.图像膨胀效果展示
  • 3.图像腐蚀处理
    • 3.1.图像腐蚀原理简介
    • 3.2.图像腐蚀核心代码
    • 3.3.图像腐蚀效果展示
  • 4.易错点总结与反思

1.文章内容来源

1.题目来源:https://edu.csdn.net/skill/practice/opencv-43cb627865154bb69eaad017845e8944/8295?language=opencv&materialId=20783
2.资料来源:https://edu.csdn.net/skill/opencv/opencv-43cb627865154bb69eaad017845e8944?category=658

2.图像膨胀处理

2.1.图像膨胀原理简介

图像膨胀原理:
膨胀过程是有一个结构元素或者模板去在原图像素比对.
当比对过程中,中心像素位置的值根据其八邻域(看取得kernel卷积核的大小)取或运算。
或运算为1就取自己的中心值,否则将周围的最大值去代替中心值,
如下图。由于将周围的最大值去代替中心值,所膨胀的就是白色(高亮部分)

膨胀函数解析:
膨胀函数cv2.dilate(img,kernel,iterations)
1.img:原图像
2.kernel:指膨胀操作的内核,默认3x3的卷积核,也可以自己选择修改。
3.iterations:迭代次数,默认为1.

2.2.图像膨胀核心代码

import cv2
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def dilate_example(image):
    #图像灰度化处理
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #图像阈值化处理
    ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    #设定卷积核函数
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    dst = cv2.dilate(binary, kernel)#图像膨胀处理
    
    figure=[image,gray,binary, dst]
    title=[u'原始图像',u'灰度图像',u'阈值化处理图像',u'膨胀化图像']
    for i in range(4):
        plt.subplot(1,4,i+1)
        plt.imshow(figure[i],'gray')
        plt.title(title[i])
        plt.xticks([])
        plt.yticks([])
    plt.show()

if __name__=='__main__':
    img = cv2.imread(r"D:\HuaweiMoveData\Users\27182\Desktop\opencv\3.Binary image processing\lena.png")
    dilate_example(img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

2.3.图像膨胀效果展示

                在这里插入图片描述

3.图像腐蚀处理

3.1.图像腐蚀原理简介

图像腐蚀原理:
腐蚀过程是有一个结构元素或者模板去在原图像素比对.
当比对过程中,中心像素位置的值根据其八邻域(看取得kernel卷积核的大小)取或运算。
或运算为1就取自己的中心值,否则将周围的最大值去代替中心值,
如下图。由于将周围的最大值去代替中心值,所腐蚀的就是白色(高亮部分),高亮部分会变黑.

腐蚀函数解析:
腐蚀函数:cv2.erode(img,kernel,iterations)
1.img:原图像
2.kernel:指腐蚀操作的内核,默认3x3的卷积核,也可以自己选择修改。
3.iterations:迭代次数,默认为1.

3.2.图像腐蚀核心代码

import cv2
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def dilate_example(image):
    #图像灰度化处理
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #图像阈值化处理
    ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    #设定卷积核函数
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    dst = cv2.erode(binary, kernel)#图像腐蚀处理
    
    figure=[image,gray,binary, dst]
    title=[u'原始图像',u'灰度图像',u'阈值化处理图像',u'腐蚀化图像']
    for i in range(4):
        plt.subplot(1,4,i+1)
        plt.imshow(figure[i],'gray')
        plt.title(title[i])
        plt.xticks([])
        plt.yticks([])
    plt.show()

if __name__=='__main__':
    img = cv2.imread(r"D:\HuaweiMoveData\Users\27182\Desktop\opencv\3.Binary image processing\lena.png")
    dilate_example(img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

3.3.图像腐蚀效果展示

                在这里插入图片描述

4.易错点总结与反思

易错点反思与总结:
1.膨胀函数:cv2.dilate(img,kernel,iterations),每一个参数就算是默认也要写出来!!
2.腐蚀函数:cv2.erode(img,kernel,iterations),每一个参数就算是默认也要写出来!!
3.腐蚀和膨胀是对白色部分而言的,原先黑色部分的处理没有影响。
4.kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (x, x))可以根据自己意愿设定卷积核。

http://www.niftyadmin.cn/n/5071261.html

相关文章

[SWPUCTF 2022 新生赛]善哉善哉题目解析

这一题结合的东西挺多的,但也不是说很难。 他先给了压缩包,正常压缩他没有密码卡你压缩出来是一张图片 打开看没什么提示,就按自己的思路走先查看属性,一般属性是最优先查看的,因为他在属性藏东西的地方不多&#xff…

11.2 基本电路和基本分析方法

一、基本电路 电路类型电路名称特点和典型功能指标参数或功能描述方法基本放大电路共射放大 ∣ A ˙ ∣ |\dot A| ∣A˙∣大;适用于小信号电压放大 A ˙ u \dot A_u A˙u​、 R i R_i Ri​、 R o R_o Ro​、 f L f_L fL​、 f H f_H fH​、 f b w f_{bw} fbw​共集…

VS2022配置Opencv

配置环境变量 配置路径 由于新版本VS属性管理器没有Microsoft.cpp.x64.user文件,可以选择直接在Debug x64进行配置 配置包含目录和库目录 配置链接器

SpringBoot解决LocalDateTime返回数据为数组问题

现象: 在SpringBoot项目中,接口返回的数据出现LocalDateTime对象被转换成了数组 原因分析: 默认序列化情况下会使用SerializationFeature.WRITE_DATES_AS_TIMESTAMPS。使用这个解析时就会打印出数组。 解决方法: 在配置类中…

八大排序详解(默认升序)

一、直接插入排序 直接插入排序:直接插入排序就是像打扑克牌一样,每张牌依次与前面的牌比较,遇到比自己大的就将大的牌挪到后面,遇到比自己小的就把自己放在它后面(如果自己最小就放在第一位),所有牌排一遍后就完成了排…

10.6 校招 实习 内推 面经

绿泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、校招 | 广汽丰田2024校园招聘启动! 校招 | 广汽丰田2024校园招聘启动! 2、校招 | 汇博机器人2024校园招聘全面启动! 校招 | 汇博机器人2024校园招聘全…

详解FreeRTOS:FreeRTOS任务恢复过程源码分析(进阶篇—4)

本篇博文讲解FreeRTOS中任务恢复过程的源代码,帮助各位更好理解恢复任务的原理和流程。 在详解FreeRTOS:FreeRTOS任务管理函数(基础篇—11)中,讲述了任务恢复函数有两个vTaskResume()和xTaskResumeFromISR(),一个是用在任务中的,一个是用在中断中的,但是基本的处理过程…

大语言模型之十六-基于LongLoRA的长文本上下文微调Llama-2

增加LLM上下文长度可以提升大语言模型在一些任务上的表现,这包括多轮长对话、长文本摘要、视觉-语言Transformer模型的高分辨4k模型的理解力以及代码生成、图像以及音频生成等。 对长上下文场景,在解码阶段,缓存先前token的Key和Value&#…