OpenCV+python:顶帽、黑帽、形态学梯度
生活随笔
收集整理的這篇文章主要介紹了
OpenCV+python:顶帽、黑帽、形态学梯度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1,頂帽
2,黑帽
3,形態學梯度
4,源代碼示例
import cv2 as cv
import numpy as npdef hat_gray_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 = 120;dst = cv.add(dst, cimage)cv.imshow("tophat_gray", dst)def hat_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 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("gradient", dst)def gradient2_demo(image):kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))dm = cv.dilate(image, kernel)em = cv.erode(image, kernel)dst1 = cv.subtract(image, em) # internal gradientdst2 = cv.subtract(dm, image) # external gradientcv.imshow("internal", dst1)cv.imshow("external", dst2)src = cv.imread("F:/images/lena.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
hat_gray_demo(src)
hat_binary_demo(src)
gradient_demo(src)
gradient2_demo(src)
cv.waitKey(0)cv.destroyAllWindows()
總結
以上是生活随笔為你收集整理的OpenCV+python:顶帽、黑帽、形态学梯度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV+python:膨胀和腐蚀
- 下一篇: OpenCV+python:分水岭算法