图像阈值
ret,dst = cv2.threshold(src,thresh,maxval,type)
src:输入图,只能输入单通道图像,通常来说说是灰度图dst:输出图thresh: 阈值maxval : 当图像像素值超过了阈值(或者小于阈值,根据type决定),所赋予的值type:二值化操作类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC;cv2.THRESH_TOZ ; cv2.THRESH_TOZERO_INVcv2.THRESH_BINARY 超过阈值部分去maxval(最大值),否则取0cv2.THRESH_BINARY_INV THRESH_BINARY的反转cv2.THRESH_TRUNC 大于阈值部分设置为阈值,否则不便cv2.THRESH_TOZERO 大于阈值部分不改变,否则设为0cv2.THRESH_TOZERO_INV THRESH_TOZERO的反转
代码
img
= cv2
.imread
('../imgs/cat1.jpg')
img_gray
= cv2
.imread
('../imgs/cat1.jpg',cv2
.IMREAD_GRAYSCALE
)
ret
,thresh1
= cv2
.threshold
(img_gray
,127,255,cv2
.THRESH_BINARY
)
ret
,thresh2
= cv2
.threshold
(img_gray
,127,255,cv2
.THRESH_BINARY_INV
)
ret
,thresh3
= cv2
.threshold
(img_gray
,127,255,cv2
.THRESH_TRUNC
)
ret
,thresh4
= cv2
.threshold
(img_gray
,127,255,cv2
.THRESH_TOZERO
)
ret
,thresh5
= cv2
.threshold
(img_gray
,127,255,cv2
.THRESH_TOZERO_INV
)
titles
= ['Original','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images
= [img
,thresh1
,thresh2
,thresh3
,thresh4
,thresh5
]
for i
in range(6):
plt
.subplot
(2,3,i
+1)
plt
.imshow
(images
[i
],'gray')
plt
.title
(titles
[i
])
plt
.xticks
([])
plt
.yticks
([])
plt
.show
()
效果为
图像平滑
img
= cv2
.imread
('../imgs/opencv.png')
cv2
.imshow
('img',img
)
blur
= cv2
.blur
(img
,(3,3))
cv2
.imshow
('blur',blur
)
box
= cv2
.boxFilter
(img
,-1,(3,3),normalize
=True)
cv2
.imshow
('box',box
)
box
= cv2
.boxFilter
(img
,-1,(3,3),normalize
=False)
cv2
.imshow
('box',box
)
aussian
= cv2
.GaussianBlur
(img
,(5,5),1)
cv2
.imshow
('aussian',aussian
)
median
= cv2
.medianBlur
(img
,5)
cv2
.imshow
('median',median
)
cv2
.waitKey
(0)
cv2
.destroyAllWindows
()
小记
2020.7.1 9:43