2026/1/8 2:34:49
网站建设
项目流程
企业网站网络推广怎么做,centos建WordPress,双桥seo排名优化培训,wordpress太强大形态学操作是OpenCV中处理二值图像的核心手段#xff0c;常用于目标检测、图像降噪、轮廓提取等场景一、核心流程#xff1a;从原图到二值化形态学操作的前提是得到干净的二值图像#xff0c;核心步骤为#xff1a;灰度图 → 低通滤波 → 二值化。1. 灰度图转换彩色图像需先…形态学操作是OpenCV中处理二值图像的核心手段常用于目标检测、图像降噪、轮廓提取等场景一、核心流程从原图到二值化形态学操作的前提是得到干净的二值图像核心步骤为灰度图 → 低通滤波 → 二值化。1. 灰度图转换彩色图像需先转为灰度图单通道减少计算量聚焦像素亮度信息import cv2 import numpy as np # 读取灰度图参数0表示灰度模式 path r/Users/yangjunhui/Desktop/lenaNoise.png img cv2.imread(path, 0)2. 低通滤波去除噪声原始图像可能存在椒盐噪声用高斯滤波低通滤波的一种平滑图像保留主体的同时弱化噪点# 高斯滤波(5,5)为滤波核尺寸0为标准差自动计算 blur cv2.GaussianBlur(img,(5,5),0)作用模糊图像边缘减少后续二值化的噪点干扰。3. 二值化黑白分离将灰度图转为仅含0黑、255白的二值图像突出目标区域# 二值化阈值35超过则设为255白否则0黑 ret, ths1_img cv2.threshold(blur, 35, 255, cv2.THRESH_BINARY)关键阈值需根据图像调整目标是让主体为白色背景为黑色。二、形态学核心操作腐蚀与膨胀二值化后通过腐蚀/膨胀调整目标区域的形态解决“毛刺”“孔洞”等问题。1. 先搞懂形态学核Kernel操作的“工具”是卷积核决定腐蚀/膨胀的范围和形状# 自定义3×3全1核常用尺寸可根据需求调整为5×5、7×7等 kernel np.ones((3,3), np.uint8)np.ones((3,3))生成3行3列全1矩阵代表以当前像素为中心覆盖周围8个像素np.uint8像素值专用类型0-255保证计算兼容。OpenCV也提供预设核无需手动定义# 矩形核默认 kernel_rect cv2.getStructuringElement(cv2.MORPH_RECT, (5,5)) # 椭圆核更贴合圆形目标 kernel_ellipse cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))2. 腐蚀Erosion去毛刺、瘦化目标原理用核扫描每个像素仅当核覆盖的所有像素都是白色255时中心像素才保留白色否则设为黑色。代码实现# 腐蚀操作迭代1次次数越多腐蚀越强 erosion_img cv2.erode(ths1_img, kernel, iterations 1) # 显示结果自定义显示函数 def show(img, title): cv2.imshow(title, img) cv2.waitKey(0) show(erosion_img, 腐蚀后)效果白色前景区域“收缩”边缘被侵蚀细小花絮/毛刺噪点被消除孤立的白色小噪点如单个像素会被完全去掉目标区域之间的窄连接可能被断开。适用场景去除二值图中的白色噪点、细化目标边缘。3. 膨胀Dilation填孔洞、加粗目标原理与腐蚀相反核扫描时只要覆盖区域内有至少一个白色像素中心像素就设为白色。代码实现# 膨胀操作迭代1次 dilate_img cv2.dilate(ths1_img, kernel, iterations1) show(dilate_img, 膨胀后)效果白色前景区域“扩张”细小孔洞/断裂处被填充目标边缘变粗孤立的黑色小噪点被覆盖断裂的线条可被重新连接。适用场景填补目标区域的黑色孔洞、连接断裂的轮廓。4. 拓展形态学梯度通过“膨胀-腐蚀”“膨胀-原图”或“原图-腐蚀”可提取目标的边缘像素得到空心轮廓效果常用于轮廓检测。四、完整实战代码import cv2 import numpy as np # 自定义显示函数 def show(img, title): cv2.imshow(title, img) cv2.waitKey(0) cv2.destroyWindow(title) # 关闭窗口避免占用内存 # 1. 读取灰度图 path r/Users/yangjunhui/Desktop/lenaNoise.png img cv2.imread(path, 0) show(img, 原始灰度图) # 2. 高斯滤波降噪 blur cv2.GaussianBlur(img, (5,5), 0) show(blur, 高斯滤波后) # 3. 二值化 ret, ths1_img cv2.threshold(blur, 35, 255, cv2.THRESH_BINARY) show(ths1_img, 二值化后) # 4. 定义形态学核 kernel np.ones((3,3), np.uint8) # 5. 腐蚀操作 erosion_img cv2.erode(ths1_img, kernel, iterations1) show(erosion_img, 腐蚀后) # 6. 膨胀操作 dilate_img cv2.dilate(ths1_img, kernel, iterations1) show(dilate_img, 膨胀后)五、总结操作核心效果适用场景腐蚀去毛刺、瘦化目标消除白色噪点、细化边缘膨胀填孔洞、加粗目标填补黑色孔洞、连接断裂轮廓梯度提取边缘、生成空心轮廓目标轮廓检测形态学操作的关键是“先腐蚀去噪再膨胀修复”开运算或“先膨胀填洞再腐蚀还原”闭运算灵活组合可解决大部分二值图处理问题。