形態學梯度調用
import cv2
import numpy as np
# 讀圖
# img = cv2.imread('./output2/2.jpg', 0)
# # 設置核
# kernel = np.ones((5, 5), np.uint8)
# # 形態學梯度調用
# gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
#
# # 顯示效果
# cv2.imshow('src', img)
# cv2.imshow('result', gradient)
# cv2.waitKey()
img = cv2.imread('./output1/3.jpg', cv2.IMREAD_UNCHANGED)
# 設置核
kernel = np.ones((3, 3), np.uint8)
# 形態學梯度調用
erosion = cv2.erode(img, kernel)
# 顯示效果
cv2.imshow('src', img)
cv2.imshow('result', erosion)
cv2.waitKey()
開運算
不斷的開運算是沒有關系的
import cv2
import numpy as np
# 讀圖
img = cv2.imread('./output1/2.jpg', 0)
# 設置核
# kernel = np.ones((5, 5), np.uint8)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(2,2))
# 開運算
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
# 顯示效果
cv2.imshow('src', img)
cv2.imshow('result', opening)
cv2.waitKey()
# def open_demo(image):
# # print(image.shape)
# gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
# ret , binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
# # kernel = np.ones((5,5),np.uint16)
# kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))
# dst = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
# cv.imshow("open_demo",dst)
#
# img = cv.imread('./output2/2.jpg', 0)
# open_demo(img)
自實現開運算
主要是通過不同的系數來實現腐蝕和膨脹的結合
import cv2
from PIL import Image
import numpy as np
img = cv2.imread('./output1/0.jpg', cv2.IMREAD_UNCHANGED)
# 設置核
kernel = np.ones((2, 2), np.uint8)
# 形態學梯度調用
erosion = cv2.erode(img, kernel, iterations=2)
kernel = np.ones((2, 2), np.uint8)
dilate = cv2.dilate(erosion, kernel, iterations=1)
# 顯示效果
# v2.imshow('src', img)
# cv2.imshow('result', erosion)
# cv2.imshow('result1', dilate)
cv2.imwrite("./0x.jpg", dilate)
cv2.waitKey()
黑帽
import cv2
import numpy as np
#讀圖
img = cv2.imread('./output2/2.jpg',0)
#設置核
kernel = np.ones((5,5),np.uint8)
#黑帽調用
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
#顯示效果
cv2.imshow('src',img)
cv2.imshow('show',blackhat)
cv2.waitKey()