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()