问题描述
这是我的代码
这行代码有问题
row.append(padded_image[i+r][j+s])
这表明IndexError: index 518 is out of bounds for axis 0 with size 518
import cv2
import numpy as np
from matplotlib import pyplot as plt
img=cv2.imread('2.png')
gray_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray_image.shape
n = len(gray_image[0])
print(gray_image[0])
filter_matrix = [[1,1,1],[0,0],[-1,-1,-1]]
#filter_matrix = [[-1,1]] for vertical edge detector
size_of_filter = 3
stride = 1
padding_size = 5
def convolution(matrix1,matrix2):
w = 0
for i in range(size_of_filter):
for j in range(size_of_filter):
w+=matrix1[i][j]*matrix2[i][j]
return w
def add_padding(matrix,padding_size):
for p in range(padding_size):
black = np.zeros((1,matrix.shape[1]),dtype='uint8')
matrix = np.append(matrix,black,axis=0)
matrix = np.append(black,matrix,axis=0)
black = np.zeros((matrix.shape[0],1),axis=1)
matrix = np.append(black,axis=1)
return matrix
if padding_size>0:
padded_image = add_padding(gray_image,padding_size)
else:
padded_image = gray_image
n = len(padded_image[0])
reduced_matrix = list()
for i in range(n-size_of_filter+1):
main_row = list()
for j in range(n-size_of_filter+1):
temp_matrix = list()
for r in range(size_of_filter):
row = list()
for s in range(size_of_filter):
row.append(padded_image[i+r][j+s])
temp_matrix.append(row)
ans = convolution(temp_matrix,filter_matrix)
main_row.append(ans)
reduced_matrix.append(main_row)
new_img = np.array(reduced_matrix,dtype='uint8')
new_img.shape
cv2.namedWindow('new_img')
cv2.imshow('gray_image',gray_image)
cv2.imshow('new_img',new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)