OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@708 7cac0...
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Tue, 30 Nov 2010 15:20:20 +0000 (15:20 +0000)
committerAtsuo Igarashi <atsuoigarashi@ubuntu.(none)>
Tue, 5 Apr 2011 07:45:13 +0000 (16:45 +0900)
utils/qt/.classpath
utils/qt/src.sample/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java [new file with mode: 0644]
utils/qt/src.sample/jp/nyatla/nyartoolkit/qt/sample/QtCaptureTest.java [new file with mode: 0644]

index a1c8bf7..a9650cf 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <classpath>\r
        <classpathentry kind="src" path="src"/>\r
+       <classpathentry kind="src" path="src.sample"/>\r
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
        <classpathentry combineaccessrules="false" kind="src" path="/NyARToolKit"/>\r
        <classpathentry kind="lib" path="C:/Program Files (x86)/JMF2.1.1e/lib/jmf.jar"/>\r
diff --git a/utils/qt/src.sample/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java b/utils/qt/src.sample/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java
new file mode 100644 (file)
index 0000000..fb54d9b
--- /dev/null
@@ -0,0 +1,156 @@
+/* 
+ * PROJECT: NyARToolkit QuickTime sample program.
+ * --------------------------------------------------------------------------------
+ * The MIT License
+ * Copyright (c) 2008 nyatla
+ * airmail(at)ebony.plala.or.jp
+ * http://nyatla.jp/nyartoolkit/
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ * 
+ */
+
+
+package jp.nyatla.nyartoolkit.qt.sample;
+
+import jp.nyatla.nyartoolkit.NyARException;
+import jp.nyatla.nyartoolkit.qt.utils.*;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.WritableRaster;
+
+import jp.nyatla.nyartoolkit.core.*;
+import jp.nyatla.nyartoolkit.core.param.NyARParam;
+import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;
+import jp.nyatla.nyartoolkit.core.types.NyARIntSize;
+import jp.nyatla.nyartoolkit.detector.NyARSingleDetectMarker;
+/**
+ * VFM+ARToolkitテストプログラム
+ * カメラから取り込んだデータからマーカーを検出して、一致度と変換行列を表示します。
+ */
+public class NyarToolkitLinkTest extends Frame implements QtCaptureListener
+{
+       private static final long serialVersionUID = 6154831884117789648L;
+
+       private final String CARCODE_FILE = "../../Data/patt.hiro";
+
+       private final String PARAM_FILE = "../../Data/camera_para.dat";
+
+       private QtCameraCapture capture;
+
+       private NyARSingleDetectMarker nya;
+
+       private QtNyARRaster_RGB raster;
+
+       private NyARTransMatResult trans_mat_result = new NyARTransMatResult();
+
+       public NyarToolkitLinkTest() throws NyARException, NyARException
+       {
+               setTitle("QtCaptureTest");
+               setBounds(0, 0, 320 + 64, 240 + 64);
+               //キャプチャの準備
+               capture = new QtCameraCapture(320, 240, 30f);
+               capture.setCaptureListener(this);
+
+               //NyARToolkitの準備
+               NyARParam ar_param = new NyARParam();
+               NyARCode ar_code = new NyARCode(16, 16);
+               ar_param.loadARParamFromFile(PARAM_FILE);
+               ar_param.changeScreenSize(320, 240);
+               raster = new QtNyARRaster_RGB(320, 240);
+               nya = new NyARSingleDetectMarker(ar_param, ar_code, 80.0,raster.getBufferType());
+               ar_code.loadARPattFromFile(CARCODE_FILE);
+               //キャプチャイメージ用のラスタを準備
+       }
+
+       public void onUpdateBuffer(byte[] pixels)
+       {
+               try {
+                       //キャプチャしたバッファをラスタにセット
+                       raster.wrapBuffer(pixels);
+
+                       Image img;
+                       {
+                               //キャプチャしたイメージを表示用に加工
+                               NyARIntSize s=raster.getSize();
+                               WritableRaster wr = WritableRaster.createInterleavedRaster(DataBuffer.TYPE_BYTE, s.w,s.h, s.w * 3, 3, new int[] { 0, 1, 2 }, null);
+                               BufferedImage  bi = new BufferedImage(s.w, s.h, BufferedImage.TYPE_3BYTE_BGR);
+       
+                               wr.setDataElements(0, 0, s.w, s.h,raster.getBuffer());
+                               bi.setData(wr);
+                               img=bi;
+                       }
+
+                       Graphics g = getGraphics();
+
+                       //マーカー検出
+                       boolean is_marker_exist = nya.detectMarkerLite(raster, 100);
+                       if (is_marker_exist) {
+                               //変換行列を取得
+                               nya.getTransmationMatrix(this.trans_mat_result);
+                       }
+                       //情報を画面に書く       
+                       Graphics image_g=img.getGraphics();
+                       image_g.setColor(Color.red);
+                       if (is_marker_exist) {
+                               image_g.drawString("マーカー検出:" + nya.getConfidence(), 4, 20);
+                               image_g.drawString("[m00]" + this.trans_mat_result.m00, 4, 20 + 16 * 1);
+                               image_g.drawString("[m01]" + this.trans_mat_result.m01, 4, 20 + 16 * 2);
+                               image_g.drawString("[m02]" + this.trans_mat_result.m02, 4, 20 + 16 * 3);
+                               image_g.drawString("[m03]" + this.trans_mat_result.m03, 4, 20 + 16 * 4);
+                               image_g.drawString("[m10]" + this.trans_mat_result.m10, 4, 20 + 16 * 5);
+                               image_g.drawString("[m11]" + this.trans_mat_result.m11, 4, 20 + 16 * 6);
+                               image_g.drawString("[m12]" + this.trans_mat_result.m12, 4, 20 + 16 * 7);
+                               image_g.drawString("[m13]" + this.trans_mat_result.m13, 4, 20 + 16 * 8);
+                               image_g.drawString("[m20]" + this.trans_mat_result.m20, 4, 20 + 16 * 9);
+                               image_g.drawString("[m21]" + this.trans_mat_result.m21, 4, 20 + 16 * 10);
+                               image_g.drawString("[m22]" + this.trans_mat_result.m22, 4, 20 + 16 * 11);
+                               image_g.drawString("[m23]" + this.trans_mat_result.m23, 4, 20 + 16 * 12);
+                       } else {
+                               image_g.drawString("マーカー未検出:", 32, 100);
+                       }
+                       g.drawImage(img, 32, 32, this);
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+
+       }
+
+       private void startCapture()
+       {
+               try {
+                       capture.start();
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+       }
+
+       public static void main(String[] args)
+       {
+               try {
+                       NyarToolkitLinkTest mainwin = new NyarToolkitLinkTest();
+                       mainwin.setVisible(true);
+                       mainwin.startCapture();
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+
+       }
+
+}
diff --git a/utils/qt/src.sample/jp/nyatla/nyartoolkit/qt/sample/QtCaptureTest.java b/utils/qt/src.sample/jp/nyatla/nyartoolkit/qt/sample/QtCaptureTest.java
new file mode 100644 (file)
index 0000000..df5eb57
--- /dev/null
@@ -0,0 +1,108 @@
+/* 
+ * PROJECT: NyARToolkit QuickTime sample program.
+ * --------------------------------------------------------------------------------
+ * The MIT License
+ * Copyright (c) 2008 nyatla
+ * airmail(at)ebony.plala.or.jp
+ * http://nyatla.jp/nyartoolkit/
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ * 
+ */
+package jp.nyatla.nyartoolkit.qt.sample;
+
+import jp.nyatla.nyartoolkit.NyARException;
+import jp.nyatla.nyartoolkit.qt.utils.*;
+import jp.nyatla.nyartoolkit.core.types.*;
+
+import java.awt.*;
+import java.awt.image.*;
+/**
+ * QuickTimeキャプチャプログラム
+ *
+ * On windows, You might get couldntGetRequiredComponent error.
+ * If you got error try to install WinVDIG. 
+ * http://www.eden.net.nz/7/20071008/
+ * --
+ * Windowsの場合、WinVDIGが無いとキャプチャプログラムが動かないことがあります。
+ * couldntGetRequiredComponentエラーが出たら、WinVDIGをインストールしてみてね。
+ * WinVIDGはとりあえずここから入手可能。http://www.eden.net.nz/7/20071008/
+ * 
+ *
+ */
+public class QtCaptureTest extends Frame implements QtCaptureListener
+{
+       private static final long serialVersionUID = -734697739607654631L;
+
+       public QtCaptureTest() throws NyARException
+       {
+               setTitle("QtCaptureTest");
+               setBounds(0, 0, 320 + 64, 240 + 64);
+               capture = new QtCameraCapture(320, 240, 30f);
+               capture.setCaptureListener(this);
+               //キャプチャイメージ用のラスタを準備
+               raster = new QtNyARRaster_RGB(320, 240);
+       }
+
+       private QtCameraCapture capture;
+       private QtNyARRaster_RGB raster;
+       
+       public void onUpdateBuffer(byte[] pixels)
+       {
+               try{
+                       this.raster.wrapBuffer(pixels);
+               }catch(Exception e){
+                       e.printStackTrace();
+                       return;
+               }
+               //Imageに変換してみよう!
+
+               
+               NyARIntSize s=raster.getSize();
+               WritableRaster wr = WritableRaster.createInterleavedRaster(DataBuffer.TYPE_BYTE, s.w,s.h, s.w * 3, 3, new int[] { 0, 1, 2 }, null);
+               BufferedImage  bi = new BufferedImage(s.w, s.h, BufferedImage.TYPE_3BYTE_BGR);
+
+               wr.setDataElements(0, 0, s.w, s.h,raster.getBuffer());
+               bi.setData(wr);
+               
+               Graphics g = getGraphics();
+               g.drawImage(bi, 32, 32, this);
+       }
+
+       private void startCapture()
+       {
+               try {
+                       capture.start();
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+       }
+
+       public static void main(String[] args)
+       {
+               try {
+                       QtCaptureTest mainwin = new QtCaptureTest();
+                       mainwin.setVisible(true);
+                       mainwin.startCapture();
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+
+       }
+
+}