IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 膨胀腐蚀-利用直线模板和圆模板及python-opencv代码实现 -> 正文阅读

[人工智能]膨胀腐蚀-利用直线模板和圆模板及python-opencv代码实现

也是这几天做项目才理解到,原来膨胀腐蚀还可以利用线条模板和圆的模板去做,之前都是使用矩形模板去做的。

先介绍一下opencv中膨胀腐蚀经常用到的函数: cv2.erode()/cv2.dilate()/cv2.morphologyEx()

我们经常直接如下方式使用上面的函数。

  • 第一个参数:需要处理的二值化后的图片
  • 第二个参数:kernel,可以设置为None,也可以自己设置一个kernel,可以是矩形、圆形、线性等。(就看你想提取那种类型的物体了)
  • 第三个参数:迭代次数
dilate_img = cv2.dilate(thresholdImg, None, iterations=3)  # dilate膨胀
erode_img = cv2.erode(dilate_img, None, iterations=3)  # erode腐蚀

关于kernel的设计,可以用下面这个函数,也可以用自己设计

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

如果是想自己生成模板,举个例子,生成圆的模板,可以如下:

r = 7  # r是半径
kernel = np.zeros((r, r), np.uint8)
# https://vimsky.com/examples/usage/python-opencv-cv2-circle-method.html
cv2.circle(kernel, (int(r / 2), int(r / 2)), int(r / 2), 1, -1)  # 用-1表示厚度,用1填满整个圆

举例说明一下

需要处理的图片如下:
在这里插入图片描述

import cv2
import numpy as np

"""直线膨胀腐蚀"""
img = cv2.imread("pic.png", 0)
# cv2.imshow("img", img)

t, thresholdImg = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
# cv2.imshow("thresholdImg", thresholdImg)

# 生成一个行向量1x40
element_heng = cv2.getStructuringElement(cv2.MORPH_RECT, (40, 1))
# 生成一个列向量40x1
element_shu = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 40))

# 开操作
heng = cv2.morphologyEx(thresholdImg, cv2.MORPH_OPEN, element_heng)
shu = cv2.morphologyEx(thresholdImg, cv2.MORPH_OPEN, element_shu)

cv2.imshow("shu", shu)
cv2.imshow("heng", heng)

cv2.waitKey(0)

处理的结果如下所示

在这里插入图片描述
在这里插入图片描述
当然,上面是使用了opencv的内置函数去生成模板,也可以自己手写一个

import cv2
import numpy as np

"""直线膨胀腐蚀"""
img = cv2.imread("pic.png", 0)
t, thresholdImg = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
kernel1 = np.ones((1, 40), np.uint8)
kernel2 = np.ones((40, 1), np.uint8)

heng = cv2.morphologyEx(thresholdImg, cv2.MORPH_OPEN, kernel1)
shu = cv2.morphologyEx(thresholdImg, cv2.MORPH_OPEN, kernel2)

cv2.imshow("shu", shu)
cv2.imshow("heng", heng)

cv2.waitKey(0)

后面如果有新的理解,再做补充吧,欢迎评论区交流~

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:00:00  更:2022-01-08 14:02:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 22:43:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码