könnten Sie in diesem Code suchen Sie, und sagen Sie mir, was falsch ist:Python> OpenCV> numpy> Bildverarbeitung
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()
Ich habe diesen Fehler erhalten:
File „karo. py ", Zeile 55, in out [i, j] = filt [1]; Indexerror: Index 512 sind Grenzen aus der Achse 1 mit einer Größe von 512
Dank für alle Ratschläge
Der Fehler sagt alles. Sie versuchen, auf einen Index zuzugreifen, der außerhalb der Grenzen liegt. Wenn ein Array eine Größe von 512 hat, hat es nur die Indizes 0-511. Führen Sie ein Debugging durch, um herauszufinden, warum Sie außerhalb der Grenzen sind. –