对于一个学校项目,我正在尝试建立一个跟踪方法。它应该基于 EdgeDetection 方法中的 Array 来跟踪形状轮廓的坐标。我确保轮廓只有一个像素厚。因为它是一个项目,所以我不能使用库中的任何花哨的技巧。
到目前为止,我正在使用嵌套的 forloop 来查找形状的开头。然后我使用这样的形状:
p9 p2 p3
p8 p1 p4
p7 p6 p5
p1 是我在数组中的当前位置,然后我在 p2-p9 中搜索下一个位置。
到目前为止的代码如下所示:
private static String traceCoordinates(int o[][])
{
String useless = null;
//int[][] n = new int[m[0].length][m.length];
//int[][] o = new int[n.length][n[0].length];
// n = transpose(m);
//o = thinning(n);
int hits = 0;
System.out.print(" ");
for (int a = 0; a < 1; a++)
{
for (int b = 0; b < o[0].length; b++)
{
String c = String.format("%3s", b);
System.out.print(c + " ");
}System.out.println("");
}
for (int y = 0; y < o.length; y++)
{
//String e = String.format("%3s", y).replace(" ", "0");
//System.out.print("row" + e + " ");
for (int x = 0 ; x < o[0].length ; x++)
{
if (o[y][x] == 0)
{
int xEnd = x;
int yEnd = y;
int a = y + 1;
int b = y - 1;
int c = x + 1;
int d = x - 1;
/*
Her findes værdien af de 8 nabopixler på baggrund af deres indbyrdes index.
*/
int p2 = o[b][x];
int p3 = o[b][c];
int p4 = o[y][c];
int p5 = o[a][c];
int p6 = o[a][x];
int p7 = o[a][d];
int p8 = o[y][d];
int p9 = o[b][d];
完成后,跟踪通过 StringBuilder 作为字符串返回,因此是无用的变量。
我的问题是我的方法只能检测到一个方向的线。当该方向上没有更多像素时,它会跳出循环。
当年话下
相关分类