二值图像指的就是只有黑与白两种颜色的图像,其中 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()