Setting Up A Webcam(建立摄像头)

 

建立一个可以提供数据的摄像头比你想象得简单得多。在我们构建利用摄像头的文件的同时,我们将会提出如何切换debug模式开闭让我们从添加下面的方法开始:

/**
 * Creates a camera or emulator to use as the src for the ARDetector
 * to analyze for markers.
 *
 */
protected function createCamera():void
{
 	if(debug || !Camera.getCamera())
 	{
  		createEmulatorCard();
  	}
 	else
 	{
  		webcam = Camera.getCamera();
  		webcam.setMode(arDetector.width, arDetector.height, 30);
  		video = new Video(arDetector.width, arDetector.height);
  		video.attachCamera(webcam);
  	}
}

 

这个是用来检查debug模式是否激活或者是否有摄像头被检测到并且创建了CardEmulator。如果debug模式没被激活,我们创建了一个新的Camera实例并实例化了。video将会显示从摄像头来的视频流,所以我们将它匹配ARDetector的canvas的分辨率(320*240)并且将摄像头的实例附加给video。

声明的变量和导入的类包:

protected var debug:Boolean = false;
protected var webcam:Camera;
protected var video:Video;
import flash.media.Camera;
import flash.media.Video;

 

下一步在我们的init方法中将createEmulatorCard();替换为

createCaptureSource();
createCamera();

 

现在我们需要做的是移除cardEmulator.render()

public function renderViewport(event:Event = null):void
{
 	updateCaptureBitmap();

 	try
 	{
  		if (arDetector.detectMarker()) {
   			arDetector.calculateTransformMatrix(resultMat);
   			baseNode.setTransformMatrix(resultMat);
   			active();
   		}
  		else
  		{
   			inactive();
   		}
  	}
 	catch(errObject:Error) {
    		trace(errObject.message);
  	}

 	renderer.renderScene(scene, camera, viewport);
}

 

并改变我们的updateCaptureBitmap:

protected function updateCaptureBitmap():void
{
 	if(debug || !video)
 	{
  		cardEmulator.render();
  		capturedSrc.bitmapData.draw(cardEmulator.viewport);
  	}
 	else
 	{
  		capturedSrc.bitmapData.draw(video);
  	}
}

 

现在如果你编译你的程序你会被询问是否使用摄像头,点击确认之后就大功告成啦!!!

use_webcam