Opencv学习笔记(十二):图片腐蚀和膨胀操作
文章目录
- 腐蚀
- 代码
- 效果
- 膨胀
- 代码
- 效果
- 开运算/闭运算
- 代码
腐蚀
原理:是在原图的小区域内取局部最小值。因为是二值化图,只有 0 和 255,所以小区域内有一个是 0 该像素点就为 0:
作用:图像中的物体变小
代码
erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)#腐蚀函数
import cv2
import numpy as np# 腐蚀
image = cv2.imread('2.png')
kernel1 = np.ones((3,3),np.uint8) # 腐蚀单元
kernel2 = np.ones((5,5),np.uint8)
kernel3 = np.ones((7,7),np.uint8)erosion1 = cv2.erode(image, kernel1) # 腐蚀函数
erosion2 = cv2.erode(image, kernel2)
erosion3 = cv2.erode(image, kernel3)cv2.imshow("original", image)
cv2.imshow("erosion1", erosion1)
cv2.imshow("erosion2", erosion2)
cv2.imshow("erosion3", erosion3)cv2.waitKey(0)
效果
膨胀
原理:膨胀与腐蚀相反,取的是局部最大值。
作用:先腐蚀后膨胀,连接两个分开的物体,图像中的物体变大。
代码
import cv2
import numpy as np# 腐蚀
image = cv2.imread('3.jpg')
kernel1 = np.ones((3, 3), np.uint8) # 3个不同尺度的膨胀单元
kernel2 = np.ones((5, 5), np.uint8)
kernel3 = np.ones((9, 9), np.uint8)dilation1 = cv2.dilate(image, kernel1) # 膨胀函数
dilation2 = cv2.dilate(image, kernel2)
dilation3 = cv2.dilate(image, kernel3)cv2.imshow("original", image)
cv2.imshow("dilation1", dilation1)
cv2.imshow("dilation2", dilation2)
cv2.imshow("dilation3", dilation3)cv2.waitKey(0)
效果
开运算/闭运算
开运算就是先腐蚀后膨胀,可以直接通过opencv的morphologyEx进行处理,cv2.MORPH_OPEN指定开运算
代码
开运算:
import cv2
image = cv2.imread('2.png')
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
opening = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
cv2.imshow('original', image)
cv2.imshow('deal', opening)
cv2.waitKey(0)
闭运算:
闭运算就是先膨胀后腐蚀,可以直接调用morphologyEx,cv2.MORPH_CLOSE指定闭运算
import cv2
import numpy as np
image = cv2.imread('2.png')
close_img = cv2.morphologyEx(image,cv2.MORPH_CLOSE,kernel=np.ones((7,7),np.uint8))
cv2.imshow('original', image)
cv2.imshow('deal', close_img)
cv2.waitKey(0)
Opencv学习笔记(十二):图片腐蚀和膨胀操作相关推荐
- OpenCV学习笔记(十二)——图像分割与提取
在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...
- opencv学习笔记十二:梯度算子
[1]Robert算子: || = 由于平方和不便于计算,故近似为绝对值形式: || =| | 实际应用中,经常采用的是另一种近似梯度: |
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- opencv学习笔记(二):基于肤色的人手检测
opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...
- OpenCV学习笔记(二):3种常用访问图像中像素的方式
OpenCV学习笔记(二):3种常用访问图像中像素的方式 #include <opencv2/opencv.hpp>using namespace cv; using namespace ...
- opencv学习笔记之二值化
opencv学习笔记之二值化 1.什么是二值化 二值化,从名词意义上可以看出来,是将一共物体转化成两个值.二值即:0或255.即一个白色一个黑色.即一个图片经过二值化之后会显示成白色和黑色的形式. 2 ...
- python做直方图-python OpenCV学习笔记实现二维直方图
本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...
- 吴恩达《机器学习》学习笔记十二——机器学习系统
吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...
最新文章
- STM32 资料整理贴(更新到10年1月)[转]
- java下实现调用oracle的存储过程和函数
- 开发出高性能的网站系列文章
- [回归分析][14]--Logistic回归
- 面向多星多任务的大数据处理系统设计
- c c++ 函数内数组初值_C/C Plus Plus中的函数
- 用websocket技术开发的web聊天系统
- er图一对多的关系怎么体现_抠图高级技法之混合剪切篇
- Python- and or 的短路原则
- idea mvn命令
- CSS-DIV页面布局
- java泊松分布随机数,C语言生成泊松分布随机数
- HDU 2246 神题?一千多行
- BUUCTF——密码学——old-fashion
- javaweb基础打卡17
- Windows Workflow Foundation中实现人工活动的demo,按照XPDL规范的实现
- myeclipse自定义背景颜色
- Centos7安装docker并更改阿里云下载镜像地址(附带windows10安装docker教程)
- 基于MFC的圆环的消隐实现
- MATLAB中nargin和nargout的妙用
热门文章
- MySQL学习笔记之innodb_max_dirty_pages_pct
- 认真的做羞羞的事 一颗种子的自我分享
- 平均10870元!2023一季度居民可支配收入公布(文末附最新招聘岗位)
- web验证码的生成以及验证
- Linux 运维工程师面试问答录(推荐阅读)
- [hge] distort.h distort.cpp
- 2019.03.24【SPOJ-GSS1】Can you answer these queries I(猫树)
- 【UE4 shader】扰动水流Shader
- 【C语言初阶】带你轻松玩转所有常用操作符(1) ——算数操作符,移位操作符,位操作符
- sfm三维重建源码_OpenMVG源码阅读小记