今天遇到一个 人事的项目,项目中需要调用摄像头给员工照相。如何解决这个问题呢?

介绍一个开发包给你,MediaKit。论坛里头的人都说好,但是黑兔觉得大家好才是真的好。你不妨试试~

第一步:添加WPFMediaKit.dll 文件到项目中

第二步:把WPFMediaKit.dll文件引用进来。

  步骤 右击引用—>添加引用—>浏览选项卡—>选择WPFMediaKit.dll文件所在的位置.

第三步:在窗口顶端加入如下代码(注意不要该意记)就像using一个类样。

xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"

  1. <Window x:Class="IXiahe.Photos"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="Photos" Height="300" Width="300"
  5. xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
  6. WindowStartupLocation="CenterScreen" Loaded="loaded">

第四步:添加VideoCaptureElement控件 用来显示一个预览的画面 (需要手写,因为工具箱没有这个控件)

  1. <StackPanel>
  2. <ComboBox Name="cb" SelectionChanged="cb_SelectionChanged"/> <!--选摄像头-->
  3. <WPFMediaKit:VideoCaptureElement Height="200" Name="vce"/> <!--预览画面-->
  4. <Button Height="50" x:Name="btnCapture" Content="拍照" Click="btnCapture_Click"/> <!--拍照按钮-->
  5. </StackPanel>
  1. 第五步: 接下来就是后台代码
  1. private void Window_Loaded(object sender, RoutedEventArgs e)
  2. {
  3. cb.ItemsSource = MultimediaUtil.VideoInputNames;
  4. if (MultimediaUtil.VideoInputNames.Length > 0)
  5. {
  6. cb.SelectedIndex = 0;//第0个摄像头为默认摄像头
  7. }
  8. else
  9. {
  10. MessageBox.Show("电脑没有安装任何可用摄像头");
  11. }
  12. }
  13.  
  14. private void cbCameras_SelectionChanged(object sender, SelectionChangedEventArgs e)
  15. {
  16. captureElement.VideoCaptureSource = (string)cbCameras.SelectedItem;
  17. }
  18.  
  19. /// <summary>
  20. /// 拍照
  21. /// </summary>
  22.  
  23. private void btnCapture_Click(object sender, RoutedEventArgs e)
  24. {
  25. //captureElement. 怎么抓取高清的原始图像
  26. RenderTargetBitmap bmp = new RenderTargetBitmap(
  27. (int)captureElement.ActualWidth,
  28. (int)captureElement.ActualHeight,
  29. 96, 96, PixelFormats.Default);
  30.  
  31. //为避免抓不全的情况,需要在Render之前调用Measure、Arrange
  32. //为避免VideoCaptureElement显示不全,需要把
  33. //VideoCaptureElement的Stretch="Fill"
  34. captureElement.Measure(captureElement.RenderSize);
  35. captureElement.Arrange(new Rect(captureElement.RenderSize));
  36. bmp.Render(captureElement);
  37. //这里需要创建一个流以便存储摄像头拍摄到的图片。
  1. //当然,可以使文件流,也可以使内存流。
  1. BitmapEncoder encoder = new JpegBitmapEncoder();
  2. encoder.Frames.Add(BitmapFrame.Create(bmp));
  3. encoder.Save(ms);
  4. captureElement.Pause();
  5. }
  6.  
  7. /// <summary>
  8. /// 重拍
  9. /// </summary>
  10.  
  11. private void btnanew_Click(object sender, RoutedEventArgs e)
  12. {
  13. captureElement.Play();
  14. }
  15.  
  16. /// <summary>
  17. /// 确定
  18. /// </summary>
  19.  
  20. private void btnOK_Click(object sender, RoutedEventArgs e)
  21. {
  22. CaptureData = ms.ToArray();
  23. ms.Dispose();
  24. DialogResult = true;
  25. }

【MediaKit】WPF项目中 调用摄像头拍照的开发包的更多相关文章

  1. html5中调用摄像头拍照

    方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象.调用摄像头的參数 PopPosition: JSON对象,弹出拍照或摄像 ...

  2. android: 调用摄像头拍照

    很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...

  3. 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)

    前言: AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理.神经网络.遗传算法和机器学习等.在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库.本 ...

  4. C# - VS2019调用AForge库实现调用摄像头拍照功能

    前言 作为一名资深Delphi7程序员,想要实现摄像头扫描一维码/二维码功能,发现所有免费的第三方库都没有简便的实现办法,通用的OpenCV或者ZXing库基本上只支持XE以上的版本,而且一维码的识别 ...

  5. android ——调用摄像头拍照和相册

    先在布局文件中加入两个按钮和一个图片控件 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  6. Java乔晓松-android中调用系统拍照功能并显示拍照的图片

    android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...

  7. AForge调用摄像头拍照时设置分辨率

    简单记录下AForge2.2.5.0版本调用摄像头拍照时设置分辨率的方法. FilterInfo info = _videoDevices[0];//获取第一个摄像头 _cameraDevice = ...

  8. Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决

    问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...

  9. WPF项目中解决ConfigurationManager不能用(转)

    https://blog.csdn.net/MOESECSDN/article/details/78107888 在WPF项目中遇到这样的问题,做一下笔记.希望对自己和读者都有帮助. 在aap.con ...

随机推荐

  1. SIFT算法的应用--目标识别之Bag-of-words模型

    原文:http://blog.csdn.net/v_JULY_v/article/details/6555899 SIFT算法的应用 -目标识别之用Bag-of-words模型表示一幅图像 作者:wa ...

  2. Linux清除磁盘上的RAID信息

    我的笔记本是DELL的Inspiron 14z,原装存储器是由32G的固态硬盘和512G的机器硬盘组成.后来我自己又给它加了一个256G的固态硬盘,装并装上了CentOS,打算把500G的机械硬盘当资 ...

  3. BootStrap2学习日记17---导航路径和分页

    导航路径 代码: <ul class="breadcrumb"> <li><a href="#">Home</a> ...

  4. SpringMvc多文件上传简单实现

    public ResponseItem uploadFile(MultipartHttpServletRequest request,FileItem fileItem,PageData pd) { ...

  5. JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)

    转载自:http://blog.csdn.net/skl_tz/article/details/9009805 JPasswordField 用作密码的输入框,似乎很方便,但是,为了得到输入的内容,一 ...

  6. Oracle基础 (十四)其他函数

    转换函数: TO_DATE:转换为日期 --将字符串转换为日期 SELECT TO_DATE('2014-12-31', 'yyyy-mm-dd') FROM DUAL; SELECT TO_DATE ...

  7. gcc: error trying to exec 'cc1plus': execvp: no such file or directory

    最近在安装OpenCV cmake的时,出现gcc: error trying to exec 'cc1plus': execvp: no such file or directory的错误. 导致问 ...

  8. python字符串反转

    最一般的想法就是将字符串先转换成列表,倒置列表,再将列表转换为字符串 s = 'Hello world' l = list(s) l.reverse() python ''.join(l) 而pyth ...

  9. 1166 矩阵取数游戏[区间dp+高精度]

    1166 矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description [ ...

  10. Unity之读取本地图片

    1.下载Opencv for unity. 2.把OpenCVForUnity下的StreamingAssets拖到Assets下. 3.点击Tools->opencv for unity-&g ...