赞
踩
目录
ret,dst=cv2.threshold(src,thresh,maxval,type)这个函数接受一个图像,并对其进行阈值操作处理
常见阈值类型:
cv2.THRESH_BINARY
:像素的强度大于阈值时,设置为 maxval
,否则设置为 0。(比较亮的地方变成白色,比较黑的地方变成黑色)cv2.THRESH_BINARY_INV
:反转的二进制阈值。像素的强度大于阈值时,设置为 0,否则设置为 maxval
。(比较亮的地方变成黑色,比较黑的地方变成白色)cv2.THRESH_TRUNC
:截断阈值。像素的强度大于阈值时,设置为阈值本身。(>thresh的就变成thresh)cv2.THRESH_TOZERO
:阈值设为零。像素的强度小于阈值(thresh,比较暗的)时,设置为 0(黑色),否则保持不变。cv2.THRESH_TOZERO_INV
:反转的阈值设为零。像素的强度大于阈值时,设置为 0,否则保持不变。- import cv2
- import matplotlib.pyplot as plt
-
- img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)#转化为灰度图
- 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 range(6):
- plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
- plt.title(titles[i])
- plt.xticks([]),plt.yticks([])
- plt.show()
#plt.xticks([])
和 plt.yticks([])
是 Matplotlib 中用于设置 x 轴和 y 轴刻度的函数。通过传递一个空列表 []
给它们,我们可以将刻度禁用,从而在图形中隐藏刻度标签。
这里用的是sobel算子
只要保留0.9最大(概率最大的那个)的框框
原理的话我暂时没怎么理解等我理解了再写一篇文章
maxVal和minVal两个阈值
- import cv2
- import numpy as np
- def cv_show(img,name):
- cv2.imshow(name,img)
- cv2.waitKey()
- cv2.destroyAllWindows()
- img=cv2.imread('girl.jpg',cv2.IMREAD_GRAYSCALE)
-
- v1=cv2.Canny(img,80,150)#80minVal,150maxVAL,是自己设置
- v2=cv2.Canny(img,50,100)
-
- res=np.hstack((v1,v2))
- cv_show(res,'res')
maxVal指定的越大,要求越高;反之,要求越低
minVal指定的越小,要求越高;反之,要求越低
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。