欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

OpenCV中的图像二值化

OpenCV 迷途小书童 2年前 (2022-07-16) 1521次浏览 0个评论

二值图像指的就是只有黑与白两种颜色的图像,其中 0 表示黑色, 1 表示白色(也就是255)。

图像的二值化的一般过程是,首先将输入图像转换为灰度图,然后通过二值化方法转换为二值图像。这个过程本质上就是对数据的二分类分割,寻找合理的分割阈值至关重要。

示例

import cv2
import numpy as np

image = cv2.imread('lenna.png')
cv2.imshow("original image", image)

h, w = image.shape[:2]

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
h, w = gray.shape

# 取均值作为阈值
T = cv2.mean(gray)[0]
print("T: {}".format(T))

binary = np.zeros((h, w), dtype=np.uint8)
for row in range(h):
    for col in range(w):
        pv = gray[row, col]
        if pv > T:
            binary[row, col] = 255
        else:
            binary[row, col] = 0

cv2.imshow("binary", binary)

cv2.waitKey(0)
cv2.destroyAllWindows()

opencv

参考资料

喜欢 (0)

您必须 登录 才能发表评论!