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

先介绍一下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)

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

膨胀腐蚀-利用直线模板和圆模板及python-opencv代码实现相关推荐

  1. 利用MOG2背景模型提取运动目标的OpenCV代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 前面已经写了一篇博文介绍背景建模,详情可见:运动 ...

  2. 利用均值漂移实现图像分割的原理和OpenCV代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 要想大致理解均值漂移实现图像分割的原理请见网页基 ...

  3. 利用摄像头实现人员活动检测(python+openCV)

    详见:https://blog.csdn.net/qq_35624030/article/details/79833269 附上代码: import cv2 import time # 定义摄像头对象 ...

  4. 【python OpenCV3.3 图像处理教程:直线检测、圆检测、对象测量、腐蚀、膨胀等形态学操作、数字验证码识别、人脸检测

    1. 直线检测 Hough Line Transform:前提:边缘检测已经完成,基于霍夫变换 1.1 原理 可以通过(theta,r)唯一表示一个点. 把过三个点的全部直线以某一角度全部计算出来,如 ...

  5. python利用什么写模板_Python利用逻辑回归分类实现模板

    Logistic Regression Classifier逻辑回归主要思想就是用最大似然概率方法构建出方程,为最大化方程,利用牛顿梯度上升求解方程参数. 优点:计算代价不高,易于理解和实现. 缺点: ...

  6. c++模板---1(模板概念,利用模板实现数组排序,函数模板调用规则)

    什么叫泛型编程?1. 参数类型化. 2. 模板 模板概念 c++提供了函数模板,所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表.这个通用函数就成为函数模 ...

  7. 怎么用dw修改PHP网页模板,【网站模板如何使用】从网站下载的网页模板在dwcs6中如何修改使用?什么是网页设计模板,如何利用网页设计模板?...

    [网站模板如何使用]从网站下载的网页模板在dwcs6中如何修改使用?什么是网页设计模板,如何利用网页设计模板?下面就和小编一起来看看吧! 从网站下载的网页模板在dwcs6中如何修改使用? 新建ASP网 ...

  8. 利用DOCX文档远程模板注入执行宏代码

    利用DOCX文档远程模板注入执行宏代码 简介 本地文件中在没有宏代码的情况下,攻击者可以尝试执行远程文件中宏代码.其中来自APT28的最新样本将此技术展现的淋漓尽致.该样本是docx文件,文件内没有任 ...

  9. 第四周作业:利用matlab制作图像的二值模板并分别利用模板进行“与模板相与”、“与模板相或”、“与模板异或”操作

    文章目录 第四周作业 第一题 第二题 第四周作业 第一题 题目: 利用 MATLAB 编程,打开自己的一张照片,依次完成下列要求: 1) 以照片的自己作为目标,制作二值模板 2) 分别利用模板进行&q ...

最新文章

  1. 内存分配管理 自定义
  2. 快速生成树算法java_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...
  3. ctime库函数的使用
  4. 移动App的发展趋势
  5. 用Python实现每秒处理120万次HTTP请求
  6. 正则表达式的环视实际应用案例
  7. 【tyvj3303】连接格点,区分多维与单维很关键
  8. document 对象 html文档内容
  9. 南丁格尔邮票图片大全_【鉴赏】武夷山普通纪念币鉴赏(高清图片)
  10. vue vuex 挂载_GitHub - BingoVue/vuex: 用Vue实现简版vuex
  11. python凯撒密码流程图_python实现凯撒密码、凯撒加解密算法
  12. excel android版,Microsoft Excel手机版
  13. 嵌入式软件开发笔试面试知识点总结-ARM部分
  14. VS卸载,一键卸载VS
  15. 计算机硬盘图标闪烁,电脑本地磁盘图标显示异常如何解决
  16. 【算法导论-34】红黑树、顺序统计树的Java实现
  17. 微分 的定义,为什么引入微分
  18. 马云给正在奋斗的人的经典语句
  19. jquery实现div的隐藏和显示和点击空白显示隐藏
  20. 如何从ext3升级到ext4?

热门文章

  1. 用于物联网安全性和匿名性的轻量级可扩展区块链 LSB A Lightweight Scalable Blockchain for IoT security and anonymity
  2. Polyspace使用diab编译器分析_Bool报错
  3. 交流异步电机 VF 恒压频比 VF 调速系统 matlab simulink 仿真
  4. 查询连续3天登录的用户
  5. 高德mesh添加纹理渐变颜色
  6. Burp插件Fiora联动nuclei(windows)
  7. 手机短视频应用 --用户行为分析和优化指南
  8. 攻防世界MISC_掀桌子
  9. 商务文件合同OCR识别原理
  10. 360产品内藏黑匣子:工蜂般盗取个人隐私信息。你还敢用么?