要将图像的像素分为三类,可以使用自适应阈值二值化的方法。以下是一个示例代码:
import cv2
# 读取图像
image = cv2.imread('image.jpg', 0)
# 自适应阈值二值化
_, thresh1 = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
thresh2 = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 5)
thresh3 = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 5)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Global Thresholding', thresh1)
cv2.imshow('Adaptive Thresholding (Mean)', thresh2)
cv2.imshow('Adaptive Thresholding (Gaussian)', thresh3)
cv2.waitKey(0)
cv2.destroyAllWindows()
这段代码中,我们使用了全局阈值(THRESH_BINARY + THRESH_OTSU
)以及两种自适应阈值算法(ADAPTIVE_THRESH_MEAN_C
和ADAPTIVE_THRESH_GAUSSIAN_C
)。其中,thresh1
表示全局阈值分割结果,而thresh2
和thresh3
分别代表基于均值和高斯加权均值的自适应阈值分割结果。
你可以根据具体需求调整参数,并在不同算法之间进行比较,以选择最适合你的图像分割效果。
内容由零声教学AI助手提供,问题来源于学员提问