第十九天黑帽顶帽

numpy array 和 python list 有什么区别?标准Python的列表(list)中,元素本质是对象。如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU。因此,Numpy提供了ndarray(N-dimensional array object)对象:存储单一数据类型的多维数组。

 

 

import cv2 as cv
import numpy as np

def 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", 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("tophat", 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, (3, 3))
    dst = cv.morphologyEx(binary, cv.MORPH_GRADIENT, kernel)
    cv.imshow("tophat", 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 gradient内部梯度
    dst2 = cv.subtract(dm, image) # external gradient外部梯度
    cv.imshow("internal", dst1)
    cv.imshow("external", dst2)



print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("C:/Users/weiqiangwen/Desktop/sest/data/digits.png")
# cv.namedWindow("input contours",cv.WINDOW_AUTOSIZE)
cv.imshow("contours", src)

cv.waitKey(0)

cv.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/qq_32340685/article/details/83719001