代码如下:
import numpy as np
import cv2def Binarization(a, keras):x1 = keras[0] // 2x2 = keras[0] - x1y1 = keras[1] // 2y2 = keras[1] - y1 - 1bs = a.copy()# #给数组添加列:前面添加y2列,后面添加y1列# #1.后面添加y1列求和for i in range(1, y1 + 1):bs += np.c_[a[:, i:], a[:, -1 * i:]]print(i, np.c_[a[:, i:], a[:, -1 * i:]])# 2.前面添加y1列求和for i in range(1, y2 + 1):bs += np.c_[a[:, :i], a[:, :-1 * i]]print(i, np.c_[a[:, :i], a[:, :-1 * i]])# #给数组添加行:前面添加x2行,后面添加x1行# #1.后面添加x1行列求和for i in range(1, x1 + 1):bs += np.r_[a[i:, :], a[-1 * i:, :]]print(i, np.r_[a[i:, :], a[-1 * i:, :]])# 2.前面添加y1列求和for i in range(1, x2 + 1):bs += np.r_[a[:i, :], a[:-1 * i, :]]print(i, np.r_[a[:i, :], a[:-1 * i, :]])bs = bs / (keras[0] * keras[1])return bsif __name__ == '__main__':a = np.arange(54).reshape(6,9)keras=(1,3)img_paths = r"img\ig.jpg"img = cv2.imread(img_paths, 0)bs=Binarization(img, keras)print(bs)
对每个卷积核求均值的运算,这里是整张图片的所有像素同时计算,而不是遍历每个像素计算。如果有不理解的地方,可以对代码的每个for循环进行print,看它们的结果再去理解。