原文即图片数据:https://github.com/JiageWang/Note/tree/master/opencv
一、阈值操作
1. 阈值处理 cv2.threshold()
ret, dst = cv2.threshold(src, thresh, maxval, method)
函数参数
-
src
:原图像 -
thresh
:阈值 -
maxval
:阈值分割后得到图像的最大值 -
method
:操作方法,主要有以下六种,可使用|
操作符叠加使用-
cv2.THRESH_BINARY
:二进制阈值化,大于thresh
元素处理为maxval
,其余为0[外链图片转存失败(img-gTHTlvdE-1565772011808)(C:\Users\Administrator\OneDrive\笔记\opencv\Threshold_Tutorial_Theory_Binary.png)]
-
cv2.THRESH_BINARY_INV
:反二进制阈值化,小于thresh
元素处理为maxval
,其余为0[外链图片转存失败(img-Qd9W2Xzv-1565772011810)(C:\Users\Administrator\OneDrive\笔记\opencv\Threshold_Tutorial_Theory_Binary_Inverted.png)]
-
cv2.THRESH_TOZERO
:阈值化为0,小于thresh
元素处理为0,其余不变[外链图片转存失败(img-c6XUamQO-1565772011810)(C:\Users\Administrator\OneDrive\笔记\opencv\Threshold_Tutorial_Theory_Zero.png)]
-
cv2.THRESH_TOZERO_INV
:反阈值化为0,大于thresh
元素处理为0,其余不变[外链图片转存失败(img-rvkeuIMV-1565772011811)(C:\Users\Administrator\OneDrive\笔记\opencv\Threshold_Tutorial_Theory_Zero_Inverted.png)]
-
cv2.THRESH_TRUNC
:截断阈值化,大于thresh
部分处理为thresh
,其余不变[外链图片转存失败(img-jm5QEuh2-1565772011811)(C:\Users\Administrator\OneDrive\笔记\opencv\Threshold_Tutorial_Theory_Truncate.png)]
-
cv2.THRESH_OTSU
:大津算法,自适应阈值,将thresh
设置为0
-
返回值
ret
:返回阈值dst
:处理结果
实例效果
二进制阈值化
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
ret, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
[外链图片转存失败(img-LVA4XXOf-1565772011812)(C:\Users\Administrator\OneDrive\笔记\opencv\binary.jpg)]
反二进制阈值化
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
ret, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
[外链图片转存失败(img-a020TbiC-1565772011812)(C:\Users\Administrator\OneDrive\笔记\opencv\binary_inv.jpg)]
阈值化为0
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
ret, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
[外链图片转存失败(img-N7UM2hhs-1565772011812)(C:\Users\Administrator\OneDrive\笔记\opencv\tozero.jpg)]
反阈值化为0
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
ret, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
[外链图片转存失败(img-vr9xaAIF-1565772011813)(C:\Users\Administrator\OneDrive\笔记\opencv\tozero_inv.jpg)]
截断阈值化
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
ret, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
[外链图片转存失败(img-tAtE5Tzy-1565772011813)(C:\Users\Administrator\OneDrive\笔记\opencv\trunc.jpg)]
自适应阈值化
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
ret, dst = cv2.threshold(img, 127, 255, cv2.THRESH_OSTU)
[外链图片转存失败(img-DGgaFXYT-1565772011813)(C:\Users\Administrator\OneDrive\笔记\opencv\ostu.jpg)]
二、平滑处理
1. 均值滤波 cv2.blur()
dst = cv2.blur(src, ksize)
<