版本python3.6
保存图片需要PIL,在 cmd 输入pip install pillow
以下是代码`
import numpy as np
import matplotlib.image as mpimg
from PIL import Image
# 代码功能:
# 对一幅3通道图像的一个尺度的卷积运算
def compute_conv(fm, kernel):
[h, w] = fm.shape
k = 3
r = int(k / 2)
padding_fm = np.zeros([h + 2, w + 2]) # , np.int)
rs = np.zeros([h, w]) # , np.int)
padding_fm[1:h + 1, 1:w + 1] = fm
for i in range(1, h + 1):
for j in range(1, w + 1):
i0 = i - r
i1 = i + r + 1
j0 = j - r
j1 = j + r + 1
roi = padding_fm[i0:i1, j0:j1]
rs[i - 1][j - 1] = np.sum(roi * kernel)
return rs
# 定义卷积核
def kernel_i():
weights_data = [
[0, 0, 0],
[0, 1, 0],
[0, 0, 0]
]
weights = np.asarray(weights_data) # , np.int)
return weights
def main():
for i in range(c):
l1 = temp[:, :, i]
input = np.asarray(l1) # , np.int)
weights = kernel_i() # 获取卷积核
rs = compute_conv(input, weights) # 卷积计算
arr[:, :, i] = rs # 把卷积后的结果传给新的数组
# 把卷积后的结果保存为图片
arr01 = np.array(arr, dtype=np.uint8)
image = Image.fromarray(arr01, 'RGB')
image.save('D:/01.jpg')
# np.savetxt('D:/%d.txt' % (i+1), arr) # 把每一个维度的矩阵分别保存为一个txt文本
img = mpimg.imread("D:/picture.jpg")
temp = np.asarray(img) # , np.int)
[h, w, c] = temp.shape
arr = np.zeros((h, w, c), int)
main()