6.2 threshold函数实现阈值分割

 

 

 

前面介绍了五种阈值分割的方法,现在就是使用thrershold函数进行实现。

 

retval, dst = cv2.threshold(src, thresh, maxval, type)        //retval,阈值。一般thresh指定的是多少,trtval就是多少。

                                                                                          //dst,结果图像。

                                                                                          //src,源图像。

                                                                                          //thresh,阈值分割的时候阈值是多少。

                                                                                          //maxval, 最大值。

                                                                                          //type,类型。哪种类型分割。

 

 

一、二进制阈值化

比较暗的变黑色,比较亮的变白色。   

 

6.2 threshold函数实现阈值分割

 

 

例:

'''
二进制阈值化
'''

import cv2

image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


r,b = cv2.threshold(image,128,255,cv2.THRESH_BINARY)            #二进制阈值化

 

cv2.imshow("image", image)
cv2.imshow("result", b)

 

cv2.waitKey()
cv2.destroyAllWindows()

结果:

6.2 threshold函数实现阈值分割

 

变成黑白的。比较暗的变黑色,比较亮的变白色。

 

 

二、反二进制阈值化

比较暗的变白色,比较亮的变黑色。

 

6.2 threshold函数实现阈值分割

 

例:

'''
反二进制阈值化
'''

import cv2

 

image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


r,b = cv2.threshold(image,128,255,cv2.THRESH_BINARY_INV)            #反二进制阈值化

 

cv2.imshow("image", image)
cv2.imshow("result", b)

cv2.waitKey()
cv2.destroyAllWindows()

结果:

6.2 threshold函数实现阈值分割

变成黑白的。比较暗的变白色,比较亮的变黑色。

 

 

三、截断阈值化

比较暗的颜色没有变。比较亮的颜色都变成了127。

 

6.2 threshold函数实现阈值分割

 

例:

'''
截断阈值化
'''

import cv2

 

image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


r,b = cv2.threshold(image,128,255,cv2.THRESH_TRUNC)            #截断阈值化

 

cv2.imshow("image", image)
cv2.imshow("result", b)

cv2.waitKey()
cv2.destroyAllWindows()

 

结果:

6.2 threshold函数实现阈值分割

 

可以看到,比较亮的颜色都变成了127。比较暗的颜色没有变。

 

 

 

四、阈值化为0

比较亮的不变,比较暗的处理为黑色。

 

6.2 threshold函数实现阈值分割

 

例:

'''
阈值化为0
'''

import cv2

 

image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


r,b = cv2.threshold(image,128,255,cv2.THRESH_TOZERO)            #阈值化为0

 

cv2.imshow("image", image)
cv2.imshow("result", b)

cv2.waitKey()
cv2.destroyAllWindows()

结果:

6.2 threshold函数实现阈值分割

 

比较亮的不变,比较暗的处理为黑色。

 

 

五、反阈值化为0

比较暗的不变,比较亮的处理成黑色。

 

6.2 threshold函数实现阈值分割

 

例:

'''
反阈值化为0
'''

import cv2

 

image = cv2.imread("image\\lena512.bmp",cv2.IMREAD_UNCHANGED)


r,b = cv2.threshold(image,128,255,cv2.THRESH_TOZERO_INV)            #反阈值化为0

 

cv2.imshow("image", image)
cv2.imshow("result", b)

cv2.waitKey()
cv2.destroyAllWindows()

 

结果:

6.2 threshold函数实现阈值分割

 

比较亮的处理成黑色,比较暗的不变。