indexing - IndexError:索引 518 超出轴 0 的范围,大小为 518 站点:stackoverflow.com
问题描述
这是我的代码
我在这行代码中有问题
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,0],[-1,-1,-1]]
#filter_matrix = [[-1,0,1],[-1,0,1],[-1,0,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),dtype='uint8')
matrix = np.append(matrix,black , axis=1)
matrix = np.append(black,matrix , 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()
解决方案
推荐阅读
- c++ - 循环与索引
- javascript - 即使更改网络,如何始终通过网络连接到本地服务器?
- c - 警告是什么以及如何解决:格式“%p”需要“void *”类型的参数,但打印出来时参数 2 的类型为“int *”[-Wformat=]
- javascript - 下拉项目选择在 iPhone 上不起作用
- python - Python:溢出错误:无法将“int”放入索引大小的整数 ECC-Crypto
- javascript - window.scroll(0,0)/window.scrollTo(0, 0) 在 Chrome 中的移动设备上不起作用
- angular - Stackblitz 不适用于带有内部库的 Angular 项目
- python - Ubuntu Python3双打印输出
- ios - 在 swiftUI 中调整 VStack 的帧大小
- c# - 使用 Azure AD 从守护进程访问网站 API