Title
2020

cv2 之 图像阈值

ret,dst = cv2.threshhold(src,thresh,maxval,type)

src: 输入图,只能输入单通道图像,通常为灰度值

dst:输出图

thresh:阈值

maxval:当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值

type:二值化操作类型,包含 以下5种类型:

  cv2.THRESH_BINARY: 超过阈值部分取maxval,否则取0

  cv2.THRESH_BINARY_INV : THRESH_BINARY 的反转

  cv2.THRESH_TRUNC: 大于阈值部分设为阈值,否则不变

  cv2.THRESH_TOZERO: 大于阈值部分不改变,否则设为0

  cv2.THRESH_TOZERO_INV : THRESH_TOZERO 的反转

#直方图统计 

cv2.calcHist(images,channels,mask,histSize,ranges)

images: 原图像图像格式为unit8,或float32,当传入函数时应该用[]括起来,例如[img]

channels:如果传入的图像是灰度值,那他的值就是[0],如果图像是彩色图像,传入的参数可以是[0][1][2],他们分别对应的是BGR

mask:掩码图像。统计整体图像的直方图它就是NONE,但如果只统计图像的某一部分,就制作一个掩码并使用他

histSize:BIN的数目,也应用[]括起来

ranges:像素的范围[0:255]

#直方图均衡化

img = cv2.imread('cat.jpg')

equ = cv2.equalizeHist(img) #均衡化

plt.show(equ.ravel(),256)

plt.show()

res = np.hstack((img,equ))

cv2.imshow('res',res) 

#腐蚀与膨胀

kernel = np.ones((3,3),np.uint8)

erode = cv2.erode(img,kernel,iterations=1) #腐蚀

dilate = cv2.dilate(img,kernel,iterations=1)#膨胀

 

#开运算与闭运算

开:先腐蚀,后膨胀  毛刺去掉,线条恢复成原来的宽度,

img = cv2.imread('dog.jpg')

kernel = np.ones((5,5),np.uint8)

opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

cv2.imshow('dog',opening)

cv2.waitKey(0)

cv2.destroyAllWindows()

#闭运算   先膨胀在腐蚀 使得图像轮廓变得更光滑,与开操作相反,能弥合狭窄的间断和细小的沟壑,消除小的空洞,并填补轮廓线的裂痕

img=cv2.imshow('dog.jpg')

kernel = np.ones((5,5),np.uint8)

closing  = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

cv2.imshow('dog',closing)

cv2.waitKey(0)

cv2.destroyAllWindows()

 

#梯度运算

#梯度 = 膨胀 - 腐蚀

pie = cv2.imread('pie.jpg')

kernel = np.ones((7,7),np.uint8)

dilate = cv2.dilate(pie,kernel,iterations=5)

erosion = cv2.erode(pie,kernel,iterations=5)

res = np.hstack((dilate,erosion))

cv2.imshow('res',res)

cv2.waitKey(0)

cv2.destroyAllWindows()

gradient = cv2.morphologyEx(pie,MORPH_GRADIENT,kernel)

cv2.imshow('gradient',gradient)

cv2.waitKey(0)

cv2.destroyAllWindows()

 

#礼帽与黑帽

#礼帽 = 原始输入 -  开运算结果

#黑帽 = 闭运算 - 原始输入

img=cv2.imshow('dog.jpg')

kernel = np.ones((5,5),np.uint8)

tophat  = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

cv2.imshow('dog',tophat)

cv2.waitKey(0)

cv2.destroyAllWindows()

#黑帽

img=cv2.imshow('dog.jpg')

kernel = np.ones((5,5),np.uint8)

blackhat  = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

cv2.imshow('dog',blackhat)

cv2.waitKey(0)

cv2.destroyAllWindows()

 

posted @ 2021-07-28 13:46  俗了清风  阅读(227)  评论(0编辑  收藏  举报
Title