import cv2 as cv
import numpy as np
import copy
def original(i, j, k, ksize, img):
# 找到矩阵坐标
x1 = y1 = -ksize // 2
x2 = y2 = ksize + x1
temp = np.zeros(ksize * ksize)
count = 0
# 处理图像
for m in range(x1, x2):
for n in range(y1, y2):
if i + m < 0 or i + m > img.shape[0] - 1 or j + n < 0 or j + n > img.shape[1] - 1:
temp[count] = img[i, j, k]
else:
temp[count] = img[i + m, j + n, k]
count += 1
return temp
# 自定义最大值滤波器最小值滤波器
def max_min_functin(ksize, img, flag):
img0 = copy.copy(img)
for i in range(0, img.shape[0]):
for j in range(2, img.shape[1]):
for k in range(img.shape[2]):
temp = original(i, j, k, ksize, img0)
if flag == 0:
img[i, j, k] = np.max(temp)
elif flag == 1:
img[i, j, k] = np.min(temp)
return img
img = cv.imread('C:/Users/jenny/Desktop/Bears.png')
min_img = max_min_functin(3, copy.copy(img),1)
max_img = max_min_functin(3, copy.copy(img),0)
cv.imshow("original", img)
cv.imshow("min_img", min_img)
cv.imshow("max_img", max_img)
cv.waitKey(0)
就这些啦