import cv2 as cv
import numpy as np
def tophat_demo(image):#顶帽=原图-开操作(腐蚀+膨胀)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(gray, cv.MORPH_TOPHAT, kernel)
#增加亮度
cimage = np.array(gray.shape, np.uint8)
cimage = 100
dst = cv.add(dst, cimage)
cv.imshow("tophat", dst)
def blackhat_demo(image):#黑帽=闭操作(膨胀+腐蚀)-原图
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(gray, cv.MORPH_BLACKHAT, kernel)
#增加亮度
cimage = np.array(gray.shape, np.uint8)
cimage = 100
dst = cv.add(dst, cimage)
cv.imshow("blackhat", dst)
def tophat_binary_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(binary, cv.MORPH_TOPHAT, kernel)
cv.imshow("tophat binary", dst)
def blackhat_binary_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(binary, cv.MORPH_BLACKHAT, kernel)
cv.imshow("blackhat binary", dst)
def base_gradient_demo(image):#基本梯度=膨胀-腐蚀
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
dst = cv.morphologyEx(binary, cv.MORPH_GRADIENT, kernel)
cv.imshow("base gradient", dst)
def gradient2_demo(image):
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
pengzhang = cv.dilate(image, kernel)
fushi = cv.erode(image, kernel)
dst1 = cv.subtract(image, fushi) # 内部梯度=原图-腐蚀
dst2 = cv.subtract(pengzhang, image) # 外部梯度=膨胀-原图
cv.imshow("internal gradient", dst1)
cv.imshow("external gradient", dst2)
src = cv.imread("1.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
tophat_demo(src)
blackhat_demo(src)
tophat_binary_demo(src)
blackhat_binary_demo(src)
base_gradient_demo(src)
gradient2_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
python+openCV图像处理(二十七)
最新推荐文章于 2022-12-10 19:27:59 发布