您的位置:首页 > 编程语言 > Python开发

opencv for python (11) 图像阈值 及自适应阈值

2018-01-18 10:07 489 查看
函数cv2.threshold(img,127,255,cv2.THRESH_BINARY)

函数中四个参数分别是原图像、阈值、最大值、阈值类型

阈值类型一般分为五种:

cv2.THRESH_BINARY——大于阈值的部分像素值变为最大值,其他变为0

cv2.THRESH_BINARY_INV——大于阈值的部分变为0,其他部分变为最大值

cv2.THRESH_TRUNC——大于阈值的部分变为阈值,其余部分不变

cv2.THRESH_TOZERO——大于阈值的部分不变,其余部分变为0

cv2.THRESH_TOZERO_INV——大于阈值的部分变为0,其余部分不变

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('test2.jpg')
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)

titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img,thresh1,thresh2,thresh3,thresh4,thresh5]

for i in xrange(6):
plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()


cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)

自适应阈值是根据图像上的每一个小区域计算与其对应的阈值,因此在同一幅图像上采用的是不同的阈值,从而能使我们在亮度 不同的情况下得到更好的结果。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('CAM003.png',0)
img = cv2.medianBlur(img,5)
ret,th1 = cv2.threshold(img,110,255,cv2.THRESH_BINARY)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)

titles = ['orgianl Image','Gllobal Thresholding(v=127)','ADaptive Mean Thresholding','Adaptive Gaussian Thresholding']
images = [img,th1,th2,th3]

for i in xrange(4):
plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 函数 opencv