图像二值化是图像处理的基础操作,核心是将图像像素划分为黑白两类。本文通过极简代码,演示如何用 OpenCV 实现自定义阈值的图像二值化,新手也能快速上手。

核心代码实现 

import cv2 as cv
# 1. 读取图像
src = cv.imread("./image/2.bmp")
if src is None:
    print('could not load image')
    exit()
# 2. 显示原始图像
cv.imshow("src", src)
# 3. 转灰度图(二值化前必须步骤)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
# 4. 自定义阈值二值化:阈值100,最大值255,二值化模式
ret, binary = cv.threshold(gray, 100, 255, cv.THRESH_BINARY)
# 5. 显示二值化结果
cv.imshow('outimage', binary)
# 6. 等待按键并释放窗口
cv.waitKeyEx(0)
cv.destroyAllWindows()

关键知识点解析

  1. 二值化前提cv.threshold仅支持单通道灰度图,因此必须先通过COLOR_BGR2GRAY将彩色图转灰度。
  2. 阈值参数说明
    • 100:自定义阈值(像素值>100 设为 255,≤100 设为 0);
    • 255:二值化后的最大值(通常固定为 255,代表白色);
    • cv.THRESH_BINARY:基础二值化模式(反向用cv.THRESH_BINARY_INV)。
  3. 返回值含义ret是实际使用的阈值(自定义阈值下等于设定值),binary是二值化后的图像矩阵。

效果调整技巧

  • 调高低阈值(如 150):二值化后黑色区域更多,细节减少;
  • 调低阈值(如 50):白色区域更多,保留更多细节;
  • 替换模式为cv.THRESH_BINARY_INV:实现黑白反转的二值化效果。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐