opencv for python (11) 图像阈值 及自适应阈值
2018-01-18 10:07
525 查看
函数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,其余部分不变
cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
自适应阈值是根据图像上的每一个小区域计算与其对应的阈值,因此在同一幅图像上采用的是不同的阈值,从而能使我们在亮度 不同的情况下得到更好的结果。
函数中四个参数分别是原图像、阈值、最大值、阈值类型
阈值类型一般分为五种:
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学习11_图像自动阈值分割
- opencv for python 之 简单的图像变化
- Python-OpenCV图像阈值
- Python for opencv 之 显示图像及在图像上书写文字
- 有关opencv的学习(14)—使用自适应阈值处理图像
- 利用python opencv实现图像自适应二值化
- Python for opencv 之 显示图像及在图像上书写文字
- opencv for python 之 图像处理 阀值转换 侵蚀
- Opencv3.0-python的那些事儿:(四)、Opencv的图像阈值处理
- python opencv入门 图像阈值(10)
- Python for opencv 之 显示图像及在图像上书写文字
- python for OpenCV图像处理之模板匹配以及分水岭算法
- opencv for python (16)canny边缘检测原理及用滑动条设置阈值进行canny边缘检测
- Python语言opencv笔记(四)(图像的阈值处理)
- openCV—Python(11)—— 图像边缘检测
- Python下opencv使用笔记(四)(图像的阈值处理)
- python数字图像处理(11):图像自动阈值分割
- python-opencv 图像二值化,自适应阈值处理
- opencv for python (1) 图像读取、显示、保存
- 利用python opencv实现图像自适应二值化