Windows phone 7 在Windows Phone 7中显示摄像头输出
作为学校项目,我正在为WindowsPhone7编写一个增强现实应用程序。我想获得相机输出,然后在上面添加一层数据。有没有办法让摄像头输出显示在面板上?您的问题的简短答案是:没有 您可以使用Windows Phone 7 API()提供的Windows phone 7 在Windows Phone 7中显示摄像头输出,windows-phone-7,camera,augmented-reality,Windows Phone 7,Camera,Augmented Reality,作为学校项目,我正在为WindowsPhone7编写一个增强现实应用程序。我想获得相机输出,然后在上面添加一层数据。有没有办法让摄像头输出显示在面板上?您的问题的简短答案是:没有 您可以使用Windows Phone 7 API()提供的CameraCaptureTask捕获照片,但据我所知,您无法从相机捕获实时数据流 微软尚未宣布该平台的未来版本是否会增加该功能 使用CameraCaptureTask的示例: public partial class MainPage : PhoneAppli
CameraCaptureTask
捕获照片,但据我所知,您无法从相机捕获实时数据流
微软尚未宣布该平台的未来版本是否会增加该功能
使用CameraCaptureTask
的示例:
public partial class MainPage : PhoneApplicationPage
{
// Declare the CameraCaptureTask object with page scope.
CameraCaptureTask cameraCaptureTask;
// Constructor
public MainPage()
{
InitializeComponent();
// Initialize the CameraCaptureTask and assign the Completed handler in the page constructor.
cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
}
// In this example, the CameraCaptureTask is shown in response to a button click.
private void button1_Click(object sender, RoutedEventArgs e)
{
cameraCaptureTask.Show();
}
// The Completed event handler. In this example, a new BitmapImage is created and
// the source is set to the result stream from the CameraCaptureTask
void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
myImage.Source = bmp;
}
}
}
public部分类主页:PhoneApplicationPage
{
//声明具有页面范围的CameraCaptureTask对象。
CameraCaptureTask CameraCaptureTask;
//建造师
公共主页()
{
初始化组件();
//初始化CameraCaptureTask并在页面构造函数中分配完成的处理程序。
cameraCaptureTask=新建cameraCaptureTask();
cameraCaptureTask.Completed+=新事件处理程序(cameraCaptureTask_Completed);
}
//在本例中,显示CameraCaptureTask以响应按钮单击。
私有无效按钮1\u单击(对象发送者,路由目标)
{
cameraCaptureTask.Show();
}
//已完成的事件处理程序。在此示例中,将创建一个新的BitmapImage并
//源设置为CameraCaptureTask的结果流
无效cameraCaptureTask_已完成(对象发送方,照片结果e)
{
if(e.TaskResult==TaskResult.OK)
{
BitmapImage bmp=新的BitmapImage();
bmp.SetSource(e.ChosenPhoto);
myImage.Source=bmp;
}
}
}
根据微软的[PDF],他们不允许开发者使用任何UI元素访问相机
这来自第127页:
没有直接的UI元素
与相机关联,但
开发人员可以使用摄像机
在Microsoft.Phone.Tasks中
命名空间
如本文所述,目前我们仅限于CameraCaptureTask功能
最近发布的信息表明,支持AR的功能已列入路线图。从今天(2010年1月19日)起,您只能正式访问使用CameraCaptureTask拍摄的照片。如果您不打算向市场提交应用程序,则可以使用Dan Ardelean和Kevin Marshall概述的Microsoft.Phone.Media.Extended命名空间中的PhotoCamera类。有关视频演示和更多详细信息,请参阅。请注意,如果您使用这些程序集,您的应用程序将无法通过市场认证,因为它们不是官方SDK的一部分。仅供参考:在Windows Phone SDK 7.1(又称“Mango”)中,您现在可以编写使用所述设备摄像头的应用程序。有关最新7.1开发工具的链接,请参阅。文档在以下链接中介绍了如何执行此操作: 但基本上,添加一个视频画笔来显示摄像头的输入(也称为“取景器”)。例如,此处使用矩形控件显示相机取景器:
<!--Camera viewfinder >-->
<Rectangle Width="640" Height="480"
HorizontalAlignment="Left"
x:Name="viewfinderContainer">
<Rectangle.Fill>
<VideoBrush x:Name="viewfinderBrush" />
</Rectangle.Fill>
</Rectangle>
注意:您可能不需要所有这些,我只是从文档中复制的。在Visual Studio(至少是Pro)中,您可以在完成清理后,右键单击代码文件并单击:组织使用|删除未使用的使用
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
// Dispose camera to minimize power consumption and to expedite shutdown.
cam.Dispose();
// Good place to unhook camera event handlers too.
}
然后,基本上将相机图像应用到OnNavigatedTo处理程序中的矩形
//Code for initialization and setting the source for the viewfinder
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
// Initialize camera
cam = new Microsoft.Devices.PhotoCamera();
//Set the VideoBrush source to the camera.
viewfinderBrush.SetSource(cam);
}
…并在导航自中处理中的摄影机对象
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
// Dispose camera to minimize power consumption and to expedite shutdown.
cam.Dispose();
// Good place to unhook camera event handlers too.
}
7.1文档还在以下主题中描述了增强现实应用程序。请注意,您需要向下滚动到标题为“创建基于Silverlight的增强现实应用程序”的部分,以找到使用Mango构建该应用程序的说明
希望这也能帮助其他人在WindowsPhoneOS7.1中查找有关PhotoCamera的信息
干杯,别这么想。你可以要求相机拍摄照片,但你没有原始的相机访问权限。这个答案已经过时了。见下文