前面介绍了五种阈值分割的方法,现在就是使用thrershold函数进行实现。
retval, dst = cv2.threshold(src, thresh, maxval, type) //retval,阈值。一般thresh指定的是多少,trtval就是多少。
//dst,结果图像。
//src,源图像。
//thresh,阈值分割的时候阈值是多少。
//maxval, 最大值。
//type,类型。哪种类型分割。
一、二进制阈值化
比较暗的变黑色,比较亮的变白色。
例:
'''
二进制阈值化
'''
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()
|
结果:
变成黑白的。比较暗的变黑色,比较亮的变白色。
二、反二进制阈值化
比较暗的变白色,比较亮的变黑色。
例:
'''
反二进制阈值化
'''
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()
|
结果:
变成黑白的。比较暗的变白色,比较亮的变黑色。
三、截断阈值化
比较暗的颜色没有变。比较亮的颜色都变成了127。
例:
'''
截断阈值化
'''
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()
|
结果:
可以看到,比较亮的颜色都变成了127。比较暗的颜色没有变。
四、阈值化为0
比较亮的不变,比较暗的处理为黑色。
例:
'''
阈值化为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()
|
结果:
比较亮的不变,比较暗的处理为黑色。
五、反阈值化为0
比较暗的不变,比较亮的处理成黑色。
例:
'''
反阈值化为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()
|
结果:
比较亮的处理成黑色,比较暗的不变。
|