'''
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自适应阈值分割
最新推荐文章于 2024-12-09 23:11:37 发布
本文介绍了一种图像处理技术——自适应阈值分割,针对单一阈值难以有效分割背景与前景亮度差异大的图片的问题,通过为不同子区域选择多个阈值来提高分割效果。使用OpenCV库实现自适应阈值分割,并通过调节块大小和偏差参数进行动态调整。
638

被折叠的 条评论
为什么被折叠?



