import cv2 from matplotlib import pyplot as plt # 载入原图 img = cv2.imread('D:/Python/ThresholdSegmentation/OtsuThresholding/img/person.jpg', 0) # 全局阈值分割 ret, img_global = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # 大津法 blur = cv2.GaussianBlur(img, (5, 5), 0) ret, img_Otsu = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) # 显示图片 images = [img, 0, img_global, blur, 0, img_Otsu] titles = ['原始图像', '直方图', '全局阈值分割(127)', '原始图像', '直方图(降噪处理)', 'OTSU分割'] plt.rcParams['font.sans-serif'] = ['SimHei'] for i in range(2): plt.subplot(2, 3, i*3+1), plt.imshow(images[i*3], 'gray') plt.title(titles[i*3]), plt.xticks([]), plt.yticks([]) plt.subplot(2, 3, i*3+2), plt.hist(images[i*3].ravel(), 256) plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([]) plt.subplot(2, 3, i*3+3), plt.imshow(images[i*3+2], 'gray') plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([]) plt.show()