OpenCV 计算机视觉基础(二):图像边界填充与阈值处理详解

📅 2026/8/3 4:33:33
OpenCV 计算机视觉基础(二):图像边界填充与阈值处理详解
一、为什么需要边界填充在图像处理中卷积操作是核心处理手段之一。例如使用一个 3×3 的滤波器### # # ###当处理图像边缘像素时会遇到一个问题边缘像素周围没有完整的邻域像素可供卷积核计算。因此为了确保卷积操作能够正常进行需要对图像外围进行边界填充padding。二、OpenCV 边界填充OpenCV 提供了专门的边界填充函数cv2.copyMakeBorder()该函数的基本格式如下cv2.copyMakeBorder( src, top, bottom, left, right, borderType )参数说明参数说明src输入图像原图top顶部扩充像素数bottom底部扩充像素数left左侧扩充像素数right右侧扩充像素数borderType填充方式边界类型三、常见边界填充方式1. 常量填充BORDER_CONSTANTcv2.BORDER_CONSTANT使用固定颜色填充边界区域。示例代码constant cv2.copyMakeBorder( image, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value[229, 25, 80] )效果图像外围全部变为指定的颜色如 [229, 25, 80] 表示的 BGR 颜色。2. 镜像填充BORDER_REFLECTcv2.BORDER_REFLECT原图边缘像素序列abcdef扩充后的序列fedcbabcdef特点复制边界像素并进行镜像对称边界像素本身会被重复使用。3. 反射填充BORDER_REFLECT101cv2.BORDER_REFLECT101与 BORDER_REFLECT 类似都是镜像填充。主要区别BORDER_REFLECT101 不会重复边界像素而是从边界像素的相邻像素开始反射通常能获得更平滑的边界效果。4. 复制填充BORDER_REPLICATEcv2.BORDER_REPLICATE复制最边缘的像素值来填充边界。例如原图边缘序列为 abcde填充后变为aaaa|abcde|eeeee特点简单高效但可能在边界处产生明显的条纹效应。5. 环绕填充BORDER_WRAPcv2.BORDER_WRAP循环复制图像内容来填充边界。例如原图序列为 abcde填充后变为abcdeabcde特点适用于周期性纹理的图像能保持纹理的连续性。四、阈值处理4.1 什么是阈值处理阈值处理Thresholding是一种基本的图像分割技术根据像素值与预设阈值的比较结果将图像转换为不同的区域。常用于以下场景图像分割将前景与背景分离文字识别增强文档图像中的文字区域目标提取从复杂背景中提取特定目标五、threshold 函数OpenCV 中的阈值处理函数格式如下ret, dst cv2.threshold( src, thresh, maxval, type )参数详细说明参数作用src输入图像通常为灰度图thresh阈值临界值maxval最大值当像素值满足条件时赋予的值type阈值类型决定如何处理像素六、五种阈值类型1. 二值化THRESH_BINARYcv2.THRESH_BINARY处理规则条件结果像素值 阈值设为 maxval通常为 255其他情况设为 02. 反二值化THRESH_BINARY_INVcv2.THRESH_BINARY_INV处理规则与二值化相反像素值大于阈值时设为 0否则设为 maxval。3. 截断THRESH_TRUNCcv2.THRESH_TRUNC当像素值超过阈值时将其截断为阈值否则保持原值不变。例如阈值为 175像素值 220 会被截断为 175。4. 保留大值THRESH_TOZEROcv2.THRESH_TOZERO处理规则大于阈值的像素值保持不变小于等于阈值的像素值设为 0。5. 保留小值THRESH_TOZERO_INVcv2.THRESH_TOZERO_INV处理规则小于阈值的像素值保持不变大于等于阈值的像素值设为 0。七、实例代码gray cv2.imread( wx.jpg, cv2.IMREAD_GRAYSCALE ) ret, binary cv2.threshold( gray, 175, 255, cv2.THRESH_BINARY )实现效果将灰度图像转换为黑白二值图像阈值设为 175大于 175 的像素变为白色255其余变为黑色0。八、总结本文介绍了 OpenCV 中图像处理的两个重要技术技术/函数主要作用copyMakeBorder扩充图像边缘支持多种边界填充方式BORDER_CONSTANT使用固定颜色填充边界BORDER_REFLECT镜像填充边界像素BORDER_REPLICATE复制最边缘像素填充threshold图像分割与二值化处理二值化THRESH_BINARY将图像转换为黑白二值图像掌握这些基础技术对于后续的图像处理、计算机视觉任务至关重要。