WPF调用摄像头

添加程序集:WPFMediaKit.dll

更关键代码如下:

界面设计代码如下:

<Window x:Class="摄像头调用.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="600" Width="800"
     xmlns:wpfmedia="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
        WindowStartupLocation="CenterScreen" >
    <Grid>
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <ComboBox Name="cb" SelectionChanged="cb_SelectionChanged" Width="100" ></ComboBox>
                <Button  Width="80"  Content="拍" Name="btnCapture" Click="btnCapture_Click" Margin="200,0,0,0"></Button>
                <Button  Width="80"  Content="重拍" Name="btnReStart" Click="Restart_Click"></Button>
            </StackPanel>
            <wpfmedia:VideoCaptureElement Height="434" x:Name="vce" Stretch="Fill"  Margin="172,30,185,0" RenderTransformOrigin="0.5,0.5"  >
                <wpfmedia:VideoCaptureElement.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform Angle="-90"/>
                        <TranslateTransform/>
                    </TransformGroup>
                </wpfmedia:VideoCaptureElement.RenderTransform>
            </wpfmedia:VideoCaptureElement>
        </StackPanel>
    </Grid>
</Window>

处理事件代码

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.IO;
using WPFMediaKit.DirectShow.Controls;

namespace 摄像头调用
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            cb.ItemsSource = MultimediaUtil.VideoInputNames;//获得所有摄像头
            if (MultimediaUtil.VideoInputNames.Length > 0)
            {
                cb.SelectedIndex = 0;//第0个摄像头为默认摄像头
            }
            else
            {
                MessageBox.Show("电脑没有安装任何可用摄像头");
            }
        }

        private void btnCapture_Click(object sender, RoutedEventArgs e)//拍照
        {
            RenderTargetBitmap bmp = new RenderTargetBitmap((int)vce.ActualWidth, (int)vce.ActualHeight,
                //vce是前台wpfmedia控件的name
                96, 96, PixelFormats.Default);
            //为避免抓不全的情况,需要在Render之前调用Measure、Arrange
            //为避免VideoCaptureElement显示不全,需要把
            //VideoCaptureElement的Stretch="Fill"
            vce.Measure(vce.RenderSize);
            vce.Arrange(new Rect(vce.RenderSize));
            bmp.Render(vce);
            BitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bmp));
            using (MemoryStream ms = new MemoryStream())
            {
                encoder.Save(ms);
                byte[] captureData = ms.ToArray();
                File.WriteAllBytes(@"./photo/" + Guid.NewGuid().ToString().Substring(0, 5) + ".jpg", captureData);
            }
            vce.Pause();
        }

        //重拍
        private void Restart_Click(object sender, RoutedEventArgs e)
        {
            vce.Play();
        }

        private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e)//ComboBox控件的选择事件
        {
            vce.VideoCaptureSource = (string)cb.SelectedItem;//vce是前台wpfmedia控件的name
        }
    }
}
时间: 2024-10-21 21:29:50

WPF调用摄像头的相关文章

【MediaKit】WPF项目中 调用摄像头拍照的开发包

今天遇到一个 人事的项目,项目中需要调用摄像头给员工照相.如何解决这个问题呢? 介绍一个开发包给你,MediaKit.论坛里头的人都说好,但是黑兔觉得大家好才是真的好.你不妨试试~ 第一步:添加WPFMediaKit.dll 文件到项目中 第二步:把WPFMediaKit.dll文件引用进来. 步骤 右击引用->添加引用->浏览选项卡->选择WPFMediaKit.dll文件所在的位置. 第三步:在窗口顶端加入如下代码(注意不要该意记)就像using一个类样. xmlns:WPFMedi

麦子学院Android实战调用摄像头代码分享

Android如何实现调用摄像头?在安卓APP开发的过程中,经常会需要调用手机自身摄像头拍照的代码,那么android调用摄像头的代码是什么呢?现在麦子学院android开发老师告诉大家,android调用摄像头这个方法十分的简单实用,有需要的小伙伴可以参考下. 应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄

win8 metro 调用摄像头拍摄照片并将照片保存在相应的位置

刚刚做过这类开发,所以就先献丑了,当然所贴上的源码都是经过验证过的,已经运行成功了,希望可以给大家一些借鉴: 下面是metro UI代码: <Page x:Class="Camera.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

android调用摄像头拍照

调用手机摄像头拍照,获取拍照后的图片数据.以下代码是在activity中:     // 调用摄像头         Button b = (Button) findViewById(R.id.btn1);     b.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             // Here we fire the inte

【C#】#100 调用摄像头

需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像. 下面写一个调用摄像头的方法 案例:调用摄像头的一个DEMO[效果图] 使用的类库:AForge.dll   [Demo下载,Demo里面有类库] 1.检测电脑上的摄像头设备 FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 用Count判断摄像头设备的个数,如果没有摄像头,则抛出异常[自行

使用vue做移动app时,调用摄像头扫描二维码

现在前端技术发展飞快,前端都能做app了,那么项目中,也会遇到调用安卓手机基层的一些功能,比如调用摄像头,完成扫描二维码功能 下面我就为大家讲解一下,我在项目中调用这功能的过程. 首先我们需要一个中间框架,hbuilder http://www.html5plus.org/doc/zh_cn/accelerometer.html 这个是html5+的文档地址,我们找到Barcode模块, 有这么多,然后我们往下找 找到这段代码 <!DOCTYPE html> <html> <

Android入门(十六)调用摄像头相册

原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent&qu

HTML5——利用navigator+Video调用摄像头进行录像

以前无聊的时候玩儿过HTML5,感觉里面的很多新标签确实深深震撼了我额.... 今天需求那边要做这样一个功能,在微信里面调用摄像头进行拍摄,然后上传.刚开始最先想到的是Video标签,只要将它的src指定为当前摄像头录制到的视频就可以了. 后来百度了一段,发现还要用上Navigator,具体代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <t

win7系统下使用openCV调用摄像头问题

鄙人今日尝试使用openCV调用摄像头做图片中圆的圆心位置检测时,意外发现程序能成功调用笔记的集成摄像头,但却无法调用外接的USB摄像头.(使用的为OpenCV1.0 + VC6.0) 使用程序如下: #include"cv.h"#include"highgui.h"#include"cvcam.h"#include"iostream"using namespace std; int main(int argc,char* a