I Schrieb dieses Python-Skript, um das Bild zu verfolgen. Aber es wirft einen Fehler auf. Es zeigt "IndexError: Index 181 ist außerhalb der Grenzen für Achse 0 mit der Größe 181" wo meine Bildgröße ist 181x158. Ich habe den Bereich verkleinert, um diesen Fehler zu beheben, aber nutzlos.Verfolgen Sie ein Bild in Python
import cv2
import numpy as np
global p
a = cv2.imread('t.png',0);
b = (255 -a);
c = np.asarray(b);
p = np.count_nonzero(c)
[ay , ax] = c.shape;
z = np.zeros(c.shape, dtype=np.int)
def startTrace(yt,xt):
global p
p = p-1
z[yt,xt] = 255;
c[yt,xt] =0;
if (c[yt, xt+1] > 0):
startTrace(yt,xt+1)
elif (c[yt+1,xt+1] > 0):
startTrace(yt+1,xt+1)
elif (c[yt+1,xt] > 0):
startTrace(yt+1,xt)
elif (c[yt+1,xt-1] >0) :
startTrace(yt+1,xt-1)
elif (c[yt,xt-1] >0):
startTrace(yt,xt-1)
elif (c[yt-1,xt-1] > 0):
startTrace(yt-1,xt-1)
elif (c[yt-1,xt] > 0):
startTrace(yt-1,xt)
elif (c[yt-1,xt+1] > 0):
startTrace(yt-1,xt+1)
while (p > 0):
for y in range(1,ay-2):
for x in range(1,ax-2):
if c[y,x] > 0 :
startTrace(y,x);
Python Listen beginnen bei Null, so dass, wenn alist 5 Länge hat, ist das erste Element alist [0] und das letzte Element ist alist [4] – ShpielMeister
Versuchen Sie, den Bereich für 'yt' und' xt' zu begrenzen in 'startTrace'. Sie können über die Größe des Bildes hinausgehen, sagen "Axt" und "Ai" hier. – David
Was meinst du mit Trace? Auch Ihre 'startTrace' hat keine Basisbedingung und die Rekursion kann unendlich laufen. – ZdaR