0
あなたは、このコードを見てください、そしてそれと間違っているものを私に言うことができる:パイソン> OpenCVの> numpyの>画像処理
import cv2
import numpy as np
import os
OrigLenna = cv2.imread('Lenna.jpg', 1)
Lenna = cv2.imread('Lenna.jpg',0)
cv2.imshow('Original Lenna', OrigLenna) # <3
cv2.waitKey(0)
cv2.imshow('gray Lenna', Lenna)
cv2.waitKey(0)
cv2.destroyAllWindows()
szejp = np.shape(Lenna)
print(szejp)
s_vs_p = 0.5
amount= 0.04
out = Lenna
outs = Lenna
outp = Lenna
# Salt mode
num_salt = np.ceil(amount* Lenna.size * (s_vs_p))
coords = [np.random.randint(0, i - 1, int(num_salt)) # <- i TUTAJ :D
for i in np.shape(Lenna)]
out[coords] = 255
# Pepper mode
num_pepper = np.ceil(amount * Lenna.size * (1.-s_vs_p))
coords= [np.random.randint(0, i - 1, int(num_pepper)) # <- TUTAJ np :D
for i in np.shape(Lenna)]
out[coords]=0
cv2.imshow('salt&pepper',out)
cv2.waitKey(0)
p=100
tym=np.shape(out)
tyma=tym[0]+2*(p-1)
tymb=tym[1]+2*(p-1)
xyz=np.arange(0,2)
xyz[0]=tyma
xyz[1]=tymb
pad=np.zeros(xyz)
for i in range(1, szejp[0]):
for j in range(1, szejp[1]):
pad[i+p-1,j+p-1]=out[i,j]
padd=np.shape(pad)
for i in range(1,(padd[0]-(p-1))):
for j in range(1,(padd[1]-(p-1))):
kernel = np.ones(((p - 1) ** 2, 1))
t=1
for x in range(1,p-1):
for y in range(1,p-1):
kernel[t]=pad[i+x-1, j+y-1]
t=t+1
filt=np.sort(kernel)
out[i,j]=filt[1];
plt.imshow(filt)
plt.show()
を私はそのエラーを受け取りました:
ファイル「KAROを。 py "、ライン55、 out [i、j] = filt [1]; はIndexError:インデックス512は、大きさと軸1の境界の外に
エラーはそれをすべて言います。範囲外のインデックスにアクセスしようとしています。配列のサイズが512の場合、インデックスは0から511までしかありません。なぜあなたが限界を超えているのか理解するためにデバッグをしてください。 –