Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /nyar4psg/trunk/examples/test/MultiMarkerTest/MultiMarkerTest.pde

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1158 - (hide annotations) (download)
Tue Jan 6 07:38:11 2015 UTC (9 years, 3 months ago) by nyatla
File size: 3208 byte(s)
パッケージ構成をProcessing2.0向けに更新

1 nyatla 1158 /*
2     MultiMarker class function test program
3    
4     */
5     import processing.video.*;
6     import jp.nyatla.nyar4psg.*;
7     import processing.opengl.*;
8    
9     PFont font=createFont("FFScala", 32);
10     Capture cam;
11     MultiMarker nya;
12    
13     void setup() {
14     size(640,480,P3D);
15     colorMode(RGB, 100);
16     cam=new Capture(this,width,height);
17     nya=new MultiMarker(this,width,height,"camera_para.dat",new NyAR4PsgConfig(NyAR4PsgConfig.CS_RIGHT_HAND,NyAR4PsgConfig.TM_NYARTK));
18     nya.setARClipping(100,1000);
19     nya.setConfidenceThreshold(0.6);
20     nya.addARMarker("patt.hiro",80);
21     nya.addARMarker("patt.kanji",80);
22     nya.addNyIdMarker(31,80);
23     println(nya.VERSION); //バージョンの表示
24     cam.start();
25     }
26     int c=0;
27     void draw() {
28     c++;
29     if (cam.available() !=true) {
30     return;
31     }
32     background(255);
33     cam.read();
34     //バックグラウンドを描画
35     nya.drawBackground(cam);
36     nya.detect(cam);
37     if(nya.isExistMarker(0)){
38     nya.beginTransform(0);//マーカ座標系に設定
39     {
40     drawBox(255,0,0);
41     drawMarkerXYPos(0);
42     }
43     nya.endTransform(); //マーカ座標系を終了
44     drawMarkerPatt(0);
45     drawVertex(0);
46     //マーカのスクリーン座標を中心に円を書く
47     PVector p=nya.marker2ScreenCoordSystem(0,0,0,0);
48     noFill();
49     ellipse(p.x,p.y,200,200);
50     }
51     if(nya.isExistMarker(1)){
52     nya.beginTransform(1);//マーカ座標系に設定
53     {
54     drawBox(0,255,0);
55     drawMarkerXYPos(1);
56     }
57     nya.endTransform(); //マーカ座標系を終了
58     drawMarkerPatt(1);
59     drawVertex(1);
60     }
61     if(nya.isExistMarker(2)){
62     nya.beginTransform(2);//マーカ座標系に設定
63     {
64     drawBox(0,0,255);
65     drawMarkerXYPos(2);
66     println(nya.getLife(2));
67     }
68     nya.endTransform(); //マーカ座標系を終了
69     drawMarkerPatt(2);
70     drawVertex(2);
71     }
72    
73     }
74     void drawBox(int ir,int ig,int ib)
75     {
76     pushMatrix();
77     drawgrid();
78     fill(ir,ig,ib);
79     stroke(255,200,0);
80     translate(0,0,20);
81     box(40);
82     noFill();
83     translate(0,0,-20);
84     rect(-40,-40,80,80);
85     popMatrix();
86     }
87    
88     //この関数は、マーカパターンを描画します。
89     void drawMarkerPatt(int id)
90     {
91     PImage p=nya.pickupMarkerImage(id,
92     40,40,
93     -40,40,
94     -40,-40,
95     40,-40,
96     100,100);
97     // PImage p=nya.pickupRectMarkerImage(id,-40,-40,80,80,100,100);
98     image(p,id*100,0);
99     }
100    
101     //この関数は、マーカ平面上の点を描画します。
102     void drawMarkerXYPos(int id)
103     {
104     pushMatrix();
105     PVector pos=nya.screen2MarkerCoordSystem(id,mouseX,mouseY);
106     translate(pos.x,pos.y,0);
107     noFill();
108     stroke(0,0,100);
109     ellipse(0,0,20-c%20,20-c%20);
110     popMatrix();
111     }
112    
113     //この関数は、マーカ頂点の情報を描画します。
114     void drawVertex(int id)
115     {
116     PVector[] i_v=nya.getMarkerVertex2D(id);
117     textFont(font,10.0);
118     stroke(100,0,0);
119     for(int i=0;i<4;i++){
120     fill(100,0,0);
121     ellipse(i_v[i].x,i_v[i].y,6,6);
122     fill(0,0,0);
123     text("("+i_v[i].x+","+i_v[i].y+")",i_v[i].x,i_v[i].y);
124     }
125     }
126    
127     void drawgrid()
128     {
129     pushMatrix();
130     stroke(0);
131     strokeWeight(2);
132     line(0,0,0,100,0,0);
133     textFont(font,20.0); text("X",100,0,0);
134     line(0,0,0,0,100,0);
135     textFont(font,20.0); text("Y",0,100,0);
136     line(0,0,0,0,0,100);
137     textFont(font,20.0); text("Z",0,0,100);
138     popMatrix();
139     }
140    

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26