opencv学习笔记(五)----图像的形态学操作
图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作。。。(主要也是为了去噪声,改善图像)
形态学操作都是用于处理二值图像(其实也可以用于彩图,只是结果....)的,1位白,0位黑。。。
主要是基于卷积核的操作,设立一个指定大小的核,然后用这个核的中心点(默认的,可以修改)分别在每个像素点对照一遍,如果有与周围的值不同的改变值(1为0,0为1)就是腐蚀操作,
将周围像素的最大值赋给全部像素为膨胀操作,其他高级操作都是在腐蚀和膨胀的基础之上的操作。。
图像膨胀是图像腐蚀的逆运算
图像腐蚀操作
#图像腐蚀
#dst = cv.erode(src,kernel,iterations) # kennel卷积核 默认为3*3 iterations迭代次数 默认为1
img = cv.imread("E:/pictures/1.jpeg")
kernel = np.ones((5,5),np.uint8) #设置一个5*5的核
erode = cv.erode(img,kernel,iterations=9)
cv.imshow("orginal",img)
cv.imshow("erode",erode)
cv.waitKey()
cv.destroyAllWindows()
图像膨胀:
#图像膨胀
img = cv.imread("E:/pictures/erode.jpg",cv.IMREAD_UNCHANGED)
kernel = np.ones((5,5),np.uint8)
erode = cv.erode(img,kernel,iterations=1)
dilate = cv.dilate(erode,kernel,iterations=1)
cv.imshow("orginal",img)
cv.imshow("erode",erode)
cv.imshow("dilate",dilate)
cv.waitKey()
cv.destroyAllWindows()
开运算:先腐蚀后膨胀,用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
#开运算 开运算=膨胀(腐蚀(img))
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((6,6),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_OPEN,kernel) #主要是MORPH_OPEN参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)
cv.waitKey()
cv.destroyAllWindows()
闭运算:先膨胀后腐蚀,闭运算能够排除小的黑色区域。
#闭运算 开运算=腐蚀(膨胀(img))
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((7,7),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_CLOSE,kernel) #主要是MORPH_CLOSE参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)
cv.waitKey()
cv.destroyAllWindows()
梯度运算:膨胀图与腐蚀图之差,通常用来保留边缘轮廓(不是轮廓和边缘识别)
#梯度运算 梯度运算=膨胀-腐蚀
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((7,7),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_GRADIENT,kernel) #主要是MORPH_GRADIENT# 参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx) #礼帽=原图-开运算 得到噪声
cv.waitKey() #黑帽=闭运算-原图 得到较小的点
cv.destroyAllWindows() #礼帽和黑帽操作都是参数的不同,就不一一上代码了 #MORPH_TOPHAT #MORPH_BLACKHAT
opencv学习笔记(五)----图像的形态学操作的更多相关文章
- 【opencv学习笔记五】一个简单程序:图像读取与显示
今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- opencv学习笔记3——图像缩放,翻转和阈值分割
#图像的缩放操作 #cv.resize(src,dsize,dst=None,,fx=None,fy=None,interpolation=None) #src->原图像,dsize->目 ...
- OpenCV学习笔记(十一) 轮廓操作
在图像中寻找轮廓 首先利用Canny算子检测图像的边缘,再利用Canny算子的输出作为 寻找轮廓函数 findContours 的输入.最后用函数 drawContours 画出轮廓.边界Counto ...
- OpenCV学习笔记:矩阵的掩码操作
矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...
- OpenCV学习笔记(10)——图像梯度
学习图像梯度,图像边界等 梯度简单来说就是求导. OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Lapacian.Sobel,Scharr其实就是求一阶或二阶导. ...
- [OpenCV学习笔记2][Mat数据类型和操作]
[Mat数据类型和基本操作] ®.运行环境:Linux(RedHat+OpenCV3.0) 1.Mat的作用: Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵 ...
- OpenCV学习笔记(十) 直方图操作
直方图计算 直方图可以统计的不仅仅是颜色灰度, 它可以统计任何图像特征 (如 梯度, 方向等等).直方图的一些具体细节: dims: 需要统计的特征的数目, 在上例中, dims = 1 因为我们仅仅 ...
- opencv学习笔记(七)---图像金字塔
图像金字塔指的是同一图像不同分辨率的子图的集合,有向下取样金字塔,向上取样金字塔,拉普拉斯金字塔....它是图像多尺度表达的一种,最主要的是用于图像的分割 向下取样金字塔指高分辨率图像向低分辨率图像的 ...
随机推荐
- spring集成Redis(单机、集群)
一.单机redis配置 1. 配置redis连接池 <bean id="jedisPoolConfig" class="redis.clients.jedis.Je ...
- GIT常用命令以及作用【备忘】
git commit 提交一个修改 git branch branchName 新建一个branchName的分支 git merge branchName 将当前分支与branchName分支合 ...
- the install of mysql in Linux System
一.下载MySql 浏览器打开 https://www.mysql.com/downloads/mysql/#downloads 下载 我下载的版本是Red Hat 5 版本的 https://www ...
- 605. Can Place Flowers零一间隔种花
[抄题]: Suppose you have a long flowerbed in which some of the plots are planted and some are not. How ...
- “Device eth0 has different MAC address than expected, ignoring.”问题
配IP后进行激活的时候提示如下错误:("Device eth0 has different MAC address than expected, ignoring.") 百度了下, ...
- C++之shared_ptr总结
转自 http://blog.csdn.net/u013696062/article/details/39665247 Share_ptr也是一种智能指针.类比于auto_ptr学习.所以推荐先学习a ...
- oralce错误总结
1>System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本. 给oracle客户端的bin目录添加““Authenticated Users”权 ...
- Luogu 4159 [SCOI2009]迷路
BZOJ 1297 应当是简单题. 发现边权的数量很小,所以我们暴力把一个点拆成$9$个点,然后把$(x, i)$到$(x, i + 1)$连边,代表转移一次之后可以走回来:对于每一条存在的边$(i, ...
- 1.python系统性能信息模块之psutil模块
Psutil(进程和系统实用程序)是一个跨平台的库,用于在Python中检索有关运行进程和系统资源利用率(CPU,内存,磁盘,网络)的信息.它主要用于系统监视,分析和限制系统资源及运行进程的管理.它实 ...
- 设计模式06: Adapter 适配器模式(结构型模式)
Adapter 适配器模式(结构型模式) 适配(转换)的概念无处不在:电源转接头.电源适配器.水管转接头... 动机(Motivation)在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象 ...