나는이 파이썬 스크립트를 써서 이미지를 추적했다. 그러나 그것은 오류를 던지고있다. "IndexError : 인덱스 181이 181 축의 범위를 벗어났습니다" 내 이미지 크기가 181x158 인 곳을 보여줍니다. 이 오류를 바로 잡기 위해 범위를 줄 였지만 사용하지 않았습니다.파이썬에서 이미지 트레이스
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);
파이썬리스트는 0에서 시작하므로 alist 길이 5 경우, 첫 번째 항목 alist [0] 마지막 항목 [4] – ShpielMeister
yt'과'xt' '에 대한 범위를 제한 alist 시도되고 'startTrace'에 있습니다. 그들은 이미지의 크기를 넘어서고, 여기에'ax'와'ay'를 말할지도 모릅니다. – David
추적이란 무엇입니까? 또한 당신의'startTrace'는 기본 조건을 가지고 있지 않으며 재귀는 무한대로 실행될 수 있습니다. – ZdaR