Windows phone 7 在Windows Phone 7中显示摄像头输出

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

作为学校项目,我正在为WindowsPhone7编写一个增强现实应用程序。我想获得相机输出,然后在上面添加一层数据。有没有办法让摄像头输出显示在面板上?

您的问题的简短答案是:没有

您可以使用Windows Phone 7 API()提供的
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的信息


干杯,别这么想。你可以要求相机拍摄照片,但你没有原始的相机访问权限。这个答案已经过时了。见下文