⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singleqrtest.java

📁 java 版的 ARToolkit
💻 JAVA
字号:
/* このソースは実験用のソースです。 * 動いたり動かなかったりします。 *  */package jp.nyatla.nyartoolkit.sandbox.qrcode;import javax.media.*;import javax.media.util.BufferToImage;import javax.media.format.*;import jp.nyatla.nyartoolkit.NyARException;import jp.nyatla.nyartoolkit.jmf.utils.*;import jp.nyatla.nyartoolkit.core.*;import java.awt.*;import jp.nyatla.nyartoolkit.core.labeling.*;import jp.nyatla.nyartoolkit.core.param.*;import jp.nyatla.nyartoolkit.core.raster.*;import jp.nyatla.nyartoolkit.core.rasterfilter.*;import jp.nyatla.nyartoolkit.core2.rasterfilter.rgb2gs.*;import jp.nyatla.nyartoolkit.core2.rasterfilter.gs2bin.*;import jp.nyatla.utils.j2se.LabelingBufferdImage;import jp.nyatla.nyartoolkit.core.types.*;import jp.nyatla.nyartoolkit.core2.rasteranalyzer.threshold.*;public class SingleQrTest extends Frame implements JmfCaptureListener{	private final String camera_file = "../../Data/camera_para.dat";	private JmfNyARRaster_RGB _raster;	private JmfCaptureDevice capture;	private NyARParam ap;	public SingleQrTest() throws NyARException, NyARException	{		setBounds(0, 0, 640 + 64, 720 + 64);		// キャプチャの準備		JmfCaptureDeviceList list=new JmfCaptureDeviceList();		capture=list.getDevice(0);		capture.setCaptureFormat(320,240,30.0f);		capture.setOnCapture(this);		// キャプチャイメージ用のラスタを準備		this._raster = new JmfNyARRaster_RGB(320, 240,capture.getCaptureFormat());				// AR用カメラパラメタファイルをロード		ap = new NyARParam();		ap.loadARParamFromFile(camera_file);		ap.changeScreenSize(320, 240);							}	private NyARBinRaster _binraster1 = new NyARBinRaster(320, 240);	private NyARGrayscaleRaster _gsraster1 = new NyARGrayscaleRaster(320, 240);	private INyARRasterThresholdAnalyzer _tha=new NyARRasterThresholdAnalyzer_DiffHistgram();	private LabelingBufferdImage _bimg = new LabelingBufferdImage(320, 240);	public void onUpdateBuffer(Buffer i_buffer)	{		try {			// キャプチャしたバッファをラスタにセット			_raster.setBuffer(i_buffer);			Graphics g = getGraphics();			// キャプチャ画像			BufferToImage b2i = new BufferToImage((VideoFormat) i_buffer.getFormat());			Image img = b2i.createImage(i_buffer);			this.getGraphics().drawImage(img, 32, 32, this);			// 画像1			INyARRasterFilter_RgbToGs filter_rgb2gs = new NyARRasterFilter_RgbAve();//			INyARRasterFilter_RgbToGs filter_rgb2gs = new NyARRasterFilter_RgbMul();						filter_rgb2gs.doFilter(_raster, _gsraster1);			this._bimg.drawImage(this._gsraster1);			this.getGraphics().drawImage(this._bimg, 32 + 320, 32, 320 + 320 + 32, 240 + 32, 0, 240, 320, 0, this);			_tha.analyzeRaster(_gsraster1);			NyARRasterFilter_Threshold gs2bin=new NyARRasterFilter_Threshold(_tha.getThreshold());						// 画像2			gs2bin.doFilter(_gsraster1, _binraster1);			this._bimg.drawImage(_binraster1);			this.getGraphics().drawImage(this._bimg, 32, 32 + 240, 320 + 32, 240 + 32 + 240, 0, 240, 320, 0, this);			// 画像3			NyARLabelingImage limage = new NyARLabelingImage(320, 240);			NyARLabeling_ARToolKit labeling = new NyARLabeling_ARToolKit();			labeling.attachDestination(limage);			labeling.labeling(_binraster1);			this._bimg.drawImage(this._gsraster1);			NyARSquareStack stack = new NyARSquareStack(100);			NyARQrCodeDetector detect = new NyARQrCodeDetector(ap.getDistortionFactor(), new NyARIntSize(320,240));//			detect.bimg=this._bimg;			detect.detectMarker(_binraster1, stack);			for (int i = 0; i < stack.getLength(); i++) {				NyARSquare[] square_ptr = (NyARSquare[]) stack.getArray();				int d=square_ptr[i].direction;				int[] xp=new int[4]; 				int[] yp=new int[4]; 				for(int i2=0;i2<4;i2++){					xp[i2]=square_ptr[i].imvertex[(i2+d)%4].x;					yp[i2]=square_ptr[i].imvertex[(i2+d)%4].y;				}				Graphics g2=this._bimg.getGraphics();				g2.setColor(Color.RED);				g2.drawPolygon(xp, yp,3);				g2.setColor(Color.CYAN);				g2.drawRect(square_ptr[i].imvertex[d].x, square_ptr[i].imvertex[d].y,5,5);							}			this.getGraphics().drawImage(this._bimg, 32 + 320, 32 + 240, 320 + 32 + 320, 240 + 32 + 240, 0, 240, 320, 0, this);			// 画像3			// threshold.debugDrawHistgramMap(_workraster, _workraster2);			// this._bimg2.setImage(this._workraster2);			// this.getGraphics().drawImage(this._bimg2, 32+320, 32+240,320+32+320,240+32+240,0,240,320,0, this);			// 画像4			// NyARRasterThresholdAnalyzer_SlidePTile threshold=new NyARRasterThresholdAnalyzer_SlidePTile(15);			// threshold.analyzeRaster(_gsraster1);			// filter_gs2bin=new NyARRasterFilter_AreaAverage();			// filter_gs2bin.doFilter(_gsraster1, _binraster1);			// this._bimg.drawImage(_binraster1);			// NyARRasterDetector_QrCodeEdge detector=new NyARRasterDetector_QrCodeEdge(10000);			// detector.analyzeRaster(_binraster1);			// this._bimg.overlayData(detector.geResult());			// this.getGraphics().drawImage(this._bimg, 32, 32+480,320+32,480+32+240,0,240,320,0, this);			// 画像5			/*			 * threshold2.debugDrawHistgramMap(_workraster, _workraster2); this._bimg2.drawImage(this._workraster2); this.getGraphics().drawImage(this._bimg2,			 * 32+320, 32+480,320+32+320,480+32+240,0,240,320,0, this);			 */			// this.getGraphics().drawImage(this._bimg, 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 {			SingleQrTest mainwin = new SingleQrTest();			mainwin.setVisible(true);			mainwin.startCapture();		} catch (Exception e) {			e.printStackTrace();		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -