''' adaptive threshold segmentation:for one picture, the brightness of foreground and background may be different, it is difficult for single threshold to segment the picture well, adaptive threshold select many thresholds for different subarea to get better performance ''' import cv2 import numpy as np from matplotlib import pyplot as plt def adaptive_threshold_seg(args): block_size = cv2.getTrackbarPos(trackbar_name1, winname) block_size = block_size*2+1 bias = cv2.getTrackbarPos(trackbar_name2, winname) cimg = cv2.medianBlur(img, 5) th2 = cv2.adaptiveThreshold(cimg, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, block_size, bias) # th3 = cv2.adaptiveThreshold(cimg, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, block_size, bias) cv2.imshow(winname, th2) if __name__ == '__main__': winname = 'adaptive_threshold_seg' trackbar_name1 = 'block_size' trackbar_name2 = 'bias' img = cv2.imread('./img_1200.png', 0) cv2.imshow('img', img) cv2.namedWindow(winname) cv2.createTrackbar(trackbar_name1, winname, 1, 300, adaptive_threshold_seg) cv2.createTrackbar(trackbar_name2, winname, 0, 5, adaptive_threshold_seg) adaptive_threshold_seg(0) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()
python+opencv自适应阈值分割
最新推荐文章于 2023-06-13 21:36:55 发布