我正在使用霍夫变换在 android 上的图像中查找圆圈。有一次我得到一个堆栈溢出:
12-03 16:18:20.999: I/dalvikvm-heap(21563): Grow heap (frag case) to 29.662MB for 2253716-byte allocation
12-03 16:18:21.014: I/dalvikvm(21563): threadid=11: stack overflow on call to Lorg/DTS/boltSizer/ImageProcessing/hystThresh;.hystConnect:VII
12-03 16:18:21.014: I/dalvikvm(21563): method requires 44+20+12=76 bytes, fp is 0x5e949338 (56 left)
12-03 16:18:21.014: I/dalvikvm(21563): expanding stack end (0x5e949300 to 0x5e949000)
这是引发错误的地方:
private void hystConnect(int x, int y) {
int value = 0;
for (int x1=x-1;x1<=x+1;x1++) {
for (int y1=y-1;y1<=y+1;y1++) {
if ((x1 < width) & (y1 < height) & (x1 >= 0) & (y1 >= 0) & (x1 != x) & (y1 != y)) {
value = (input[y1*width+x1]) & 0xff;
if (value != 255) {
if (value >= lower) {
input[y1*width+x1] = 0xffffffff;
hystConnect(x1, y1);
ran++;
}
else {
input[y1*width+x1] = 0xff000000;
}
}
}
}
}
}
我想我明白这意味着什么,但是如何避免这种情况。如果您需要更多正在运行的代码,请询问。