OPencv的学习之阈值(7)

阈值关于python的代码展示:

import cv2

#导入pyplot并将其命名为plt(导入包)
import matplotlib.pyplot as plt

img = cv2.imread(r"C:\Users\master\Desktop\sheep.jpg")

#图像阈值
#ret,dst = cv2.threshold(src,thresh,maxval,type)
#src:输入图像,只能输入单通图像,通常来说的灰度图
#dst:输出图
#thresh:阈值
#maxval:当像素超过阈值(或者小于阈值,根据type来决定),所赋予的值
#type:二值化操作的类型,包含5种类型

ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)  #返回值rey等于阈值
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','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img,thresh1,thresh2,thresh3,thresh4,thresh5]

for i in range(6):  #如果开始值不写的话,就会默认从0开始,即从0到5
## 使用plt.subplot来创建小图.     
    plt.subplot(2, 3, i + 1), plt.imshow(images[i],'gray')
    plt.title(titles[i])
#下面这句语句的作用是不显示照片的x,y坐标    
    plt.xticks([]), plt.yticks([])
plt.show()


解释一下相关的5种类型:

cv2.THRESH_BINARY

超出阈值的部分取最大值,否则为零 阈值为120,因为121>120,所以121=255
cv2.THRESH_BINARY_INV         与上面的相反
cv2.THRESH_TRUNC         大于阈值的部分设为阈值,否则不变

例:阈值为150,函数值为155,所以155数值改为150
cv2.THRESH_TOZERO         大于阈值的部分不变,否则为零
cv2.THRESH_TOZERO_INV         与上面的函数相反

效果展示:不显示x,y坐标中的

 显示X,Y坐标轴的

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月17日
下一篇 2022年5月17日

相关推荐