网站服务器失去响应,移动端网站怎么做优化,wordpress传到ftp,三字顺口公司名字形态学基于图像的形状进行操作#xff0c;用于处理二值化图像#xff0c;主要包括腐蚀和膨胀两种基本操作。这些操作通常用于去除噪声、分隔或连接相邻的元素以及寻找图像中显著的最大点和最小点。
1. 形态学操作
import cv2
import numpy as np
import matplotlib.pyplot …形态学基于图像的形状进行操作用于处理二值化图像主要包括腐蚀和膨胀两种基本操作。这些操作通常用于去除噪声、分隔或连接相邻的元素以及寻找图像中显著的最大点和最小点。
1. 形态学操作
import cv2
import numpy as np
import matplotlib.pyplot as plotimg cv2.imread(tmp.jpg)
img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel np.ones((5,5), np.uint8)
img_e cv2.erode(img, kernel)
img_d cv2.dilate(img, kernel)plot.figure(figsize(12,4));
plot.subplot(1,3,1)
plot.title(source image)
plot.imshow(img)
plot.subplot(1,3,2)
plot.title(erosion)
plot.imshow(img_e)
plot.subplot(1,3,3)
plot.title(dilation)
plot.imshow(img_d)plot.show()2. 概念简述
2.1 腐蚀Erosion
基本原理腐蚀操作会将图像中的前景区域进行“侵蚀”缩小物体的边界。核kernel会扫描图像的每个像素如果核覆盖区域的所有像素值都是前景则该像素保持不变否则它将被腐蚀成背景。因此腐蚀可以有效去除图像中的小细节比如孤立的噪声点。应用场景 去除噪声腐蚀常用于消除图像中的孤立噪声点或小块不需要的细节。分割连接物体腐蚀可以用于分离连接较紧密的物体例如两个接触的物体。
2.2 膨胀Dilation
基本原理膨胀操作是腐蚀的反向操作它通过扩展物体的边界来增加前景区域的面积。核kernel扫描图像时如果核覆盖区域有一个或多个前景像素那么该像素就会被膨胀为前景。因此膨胀操作会使物体变大并且可以填充前景区域中的小空隙或“洞”。应用场景 增强物体边界膨胀通常用于在边界模糊的物体中增强边缘使得物体更加明显。连接断开的部分膨胀可以用于连接图像中断开的物体如中断的线条、文字或其他形状。
2.3 腐蚀与膨胀的结合
腐蚀和膨胀通常结合使用形成了多种形态学操作
开运算Opening先腐蚀后膨胀常用于去除小物体或噪声但保留物体整体结构。闭运算Closing先膨胀后腐蚀常用于填充物体内部的小空洞平滑物体边缘。形态学梯度通过膨胀和腐蚀之间的差异提取图像边缘
3. 开闭运算
import cv2
import numpy as np
import matplotlib.pyplot as plotimg cv2.imread(tmp.jpg)
img cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
kernel np.ones((5,5), np.uint8)
img_op cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
img_cl cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
img_gr cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)plot.figure(figsize(16,4));
plot.subplot(1,4,1)
plot.title(source image)
plot.imshow(img)
plot.subplot(1,4,2)
plot.title(Open)
plot.imshow(img_op)
plot.subplot(1,4,3)
plot.title(Close)
plot.imshow(img_cl)
plot.subplot(1,4,4)
plot.title(Gradient)
plot.imshow(img_gr)plot.show()4. Matplotlib显示函数对比
4.1 plot
绘制xy的一元方程的函数关系图 plot ([x], y, [fmt], **kwargs)
[x]横坐标轴数据可选参数y纵坐标轴数据[fmt] 定义图形的基本样式颜色点型线型**Kwargs不定长的关键字参数用字典形式设置图形的其他属性或者重复x,y,fmt用于多条线同时显示
[fmt] 具体形式 ‘[颜色][标记][线型]’是一个字符串来定义图的基本属性详细分解如下
颜色参数颜色含义bblue 蓝ggreen 绿rred 红ccyan 蓝绿mmagenta 洋红yyellow 黄kblack 黑wwhite 白
标记参数标记含义.点标记,像素标记o圆圈标记v倒三角标记^正三角标记左三角标记右三角标记1朝下三角标记2朝上三角标记3朝左三角标记4朝右三角标记s方形标记p五角形标记*星形标记h六边形标记1H六边形标记2加号标记x乘号标记D钻石标记d瘦钻石标记|竖线标记_水平线标记 线型参数线型含义-实线- -虚线-.点画线:点线
4.2 imshow
创建图像对象并配置其属性但不会显示图像 imshow(X, cmapNone, normNone, aspectNone, interpolationNone, alphaNone, vminNone, vmaxNone, originNone, extentNone, shapeNone, filternorm1, filterrad4.0, imlimNone, resampleNone, urlNone, *, dataNone, **kwargs)
X输入数据。可以是二维数组、三维数组、PIL图像对象、matplotlib路径对象等。cmap颜色映射。用于控制图像中不同数值所对应的颜色。可以选择内置的颜色映射如gray、hot、jet等也可以自定义颜色映射。norm用于控制数值的归一化方式。可以选择Normalize、LogNorm等归一化方法。aspect控制图像纵横比aspect ratio。可以设置为auto或一个数字。interpolation插值方法。用于控制图像的平滑程度和细节程度。可以选择nearest、bilinear、bicubic等插值方法。alpha图像透明度。取值范围为0~1。origin坐标轴原点的位置。可以设置为upper或lower。extent控制显示的数据范围。可以设置为[xmin, xmax, ymin, ymax]。vmin、vmax控制颜色映射的值域范围。filternorm 和 filterrad用于图像滤波的对象。可以设置为None、antigrain、freetype等。imlim 用于指定图像显示范围。resample用于指定图像重采样方式。url用于指定图像链接。
4.3 显示图像
show 实际上显示所有已经配置好的图形包括由 imshow 创建的图像具体步骤概述如下
导入Matplotlib库import matplotlib.pyplot as plt创建图形对象fig plt.figure()绘制图形使用Matplotlib提供的绘图函数进行绘制例如plt.plot(y)绘制折线, plt.imshow((x,y))绘制图像等调用show()函数显示图形plt.show() 系列文章
opencv常用边缘检测算子示例图像颜色空间对比Opencv图像变换方式区别对比Opencv常用图像滤波及色彩调节操作Opencv图像形态学操作对比Opencv