OSDN Git Service

[Backup]NyARToolkit for Java
[nyartoolkit-and/nyartoolkit-and.git] / trunk / src / jp / nyatla / nyartoolkit / core / squaredetect / ContourPickup.java
index e25a7e3..af0c05d 100644 (file)
@@ -1,5 +1,10 @@
 package jp.nyatla.nyartoolkit.core.squaredetect;\r
-\r
+/*\r
+import java.awt.color.ColorSpace;\r
+import java.awt.image.BufferedImage;\r
+import java.io.*;\r
+import javax.imageio.*;\r
+import jp.nyatla.utils.j2se.*;*/\r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
 import jp.nyatla.nyartoolkit.core.labeling.artoolkit.*;\r
@@ -32,16 +37,15 @@ public class ContourPickup
                final int width=i_raster.getWidth();\r
                final int height=i_raster.getHeight();\r
                //クリップ領域の上端に接しているポイントを得る。\r
-               int sx=i_entry_x;\r
-               int sy=i_entry_y;\r
+\r
 \r
                int coord_num = 1;\r
-               o_coord_x[0] = sx;\r
-               o_coord_y[0] = sy;\r
+               o_coord_x[0] = i_entry_x;\r
+               o_coord_y[0] = i_entry_y;\r
                int dir = 5;\r
 \r
-               int c = o_coord_x[0];\r
-               int r = o_coord_y[0];\r
+               int c = i_entry_x;\r
+               int r = i_entry_y;\r
                for (;;) {\r
                        dir = (dir + 5) % 8;//dirの正規化\r
                        //ここは頑張ればもっと最適化できると思うよ。\r
@@ -80,11 +84,19 @@ public class ContourPickup
                                        if (i_buf[(r + ydir[dir])*width+(c + xdir[dir])] == 0) {\r
                                                break;\r
                                        }\r
+/*\r
+                                       try{\r
+                                               BufferedImage b=new BufferedImage(width,height,ColorSpace.TYPE_RGB);\r
+                                               NyARRasterImageIO.copy(i_raster, b);\r
+                                       ImageIO.write(b,"png",new File("bug.png"));\r
+                                       }catch(Exception e){\r
+                                               \r
+                                       }*/\r
                                        //8方向全て調べたけどラベルが無いよ?\r
                                        throw new NyARException();                      \r
                                }\r
                        }else{\r
-                               //境界に接しているとき\r
+                               //境界に接しているとき                                \r
                                int i;\r
                                for (i = 0; i < 8; i++){                                \r
                                        final int x=c + xdir[dir];\r
@@ -111,7 +123,7 @@ public class ContourPickup
                        o_coord_x[coord_num] = c;\r
                        o_coord_y[coord_num] = r;\r
                        // 終了条件判定\r
-                       if (c == sx && r == sy){\r
+                       if (c == i_entry_x && r == i_entry_y){\r
                                coord_num++;\r
                                break;\r
                        }\r
@@ -222,6 +234,6 @@ public class ContourPickup
                        }\r
                }\r
                return coord_num;\r
-       }       \r
+       }\r
 \r
 }\r