【MediaKit】WPF项目中 调用摄像头拍照的开发包
今天遇到一个 人事的项目,项目中需要调用摄像头给员工照相。如何解决这个问题呢?
介绍一个开发包给你,MediaKit。论坛里头的人都说好,但是黑兔觉得大家好才是真的好。你不妨试试~
第一步:添加WPFMediaKit.dll 文件到项目中
第二步:把WPFMediaKit.dll文件引用进来。
步骤 右击引用—>添加引用—>浏览选项卡—>选择WPFMediaKit.dll文件所在的位置.
第三步:在窗口顶端加入如下代码(注意不要该意记)就像using一个类样。
xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
- <Window x:Class="IXiahe.Photos"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Title="Photos" Height="300" Width="300"
- xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
- WindowStartupLocation="CenterScreen" Loaded="loaded">
第四步:添加VideoCaptureElement控件 用来显示一个预览的画面 (需要手写,因为工具箱没有这个控件)
- <StackPanel>
- <ComboBox Name="cb" SelectionChanged="cb_SelectionChanged"/> <!--选摄像头-->
- <WPFMediaKit:VideoCaptureElement Height="200" Name="vce"/> <!--预览画面-->
- <Button Height="50" x:Name="btnCapture" Content="拍照" Click="btnCapture_Click"/> <!--拍照按钮-->
- </StackPanel>
- 第五步: 接下来就是后台代码
- private void Window_Loaded(object sender, RoutedEventArgs e)
- {
- cb.ItemsSource = MultimediaUtil.VideoInputNames;
- if (MultimediaUtil.VideoInputNames.Length > 0)
- {
- cb.SelectedIndex = 0;//第0个摄像头为默认摄像头
- }
- else
- {
- MessageBox.Show("电脑没有安装任何可用摄像头");
- }
- }
- private void cbCameras_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- captureElement.VideoCaptureSource = (string)cbCameras.SelectedItem;
- }
- /// <summary>
- /// 拍照
- /// </summary>
- private void btnCapture_Click(object sender, RoutedEventArgs e)
- {
- //captureElement. 怎么抓取高清的原始图像
- RenderTargetBitmap bmp = new RenderTargetBitmap(
- (int)captureElement.ActualWidth,
- (int)captureElement.ActualHeight,
- 96, 96, PixelFormats.Default);
- //为避免抓不全的情况,需要在Render之前调用Measure、Arrange
- //为避免VideoCaptureElement显示不全,需要把
- //VideoCaptureElement的Stretch="Fill"
- captureElement.Measure(captureElement.RenderSize);
- captureElement.Arrange(new Rect(captureElement.RenderSize));
- bmp.Render(captureElement);
- //这里需要创建一个流以便存储摄像头拍摄到的图片。
- //当然,可以使文件流,也可以使内存流。
- BitmapEncoder encoder = new JpegBitmapEncoder();
- encoder.Frames.Add(BitmapFrame.Create(bmp));
- encoder.Save(ms);
- captureElement.Pause();
- }
- /// <summary>
- /// 重拍
- /// </summary>
- private void btnanew_Click(object sender, RoutedEventArgs e)
- {
- captureElement.Play();
- }
- /// <summary>
- /// 确定
- /// </summary>
- private void btnOK_Click(object sender, RoutedEventArgs e)
- {
- CaptureData = ms.ToArray();
- ms.Dispose();
- DialogResult = true;
- }
【MediaKit】WPF项目中 调用摄像头拍照的开发包的更多相关文章
- html5中调用摄像头拍照
方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象.调用摄像头的參数 PopPosition: JSON对象,弹出拍照或摄像 ...
- android: 调用摄像头拍照
很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...
- 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)
前言: AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理.神经网络.遗传算法和机器学习等.在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库.本 ...
- C# - VS2019调用AForge库实现调用摄像头拍照功能
前言 作为一名资深Delphi7程序员,想要实现摄像头扫描一维码/二维码功能,发现所有免费的第三方库都没有简便的实现办法,通用的OpenCV或者ZXing库基本上只支持XE以上的版本,而且一维码的识别 ...
- android ——调用摄像头拍照和相册
先在布局文件中加入两个按钮和一个图片控件 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- AForge调用摄像头拍照时设置分辨率
简单记录下AForge2.2.5.0版本调用摄像头拍照时设置分辨率的方法. FilterInfo info = _videoDevices[0];//获取第一个摄像头 _cameraDevice = ...
- Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决
问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...
- WPF项目中解决ConfigurationManager不能用(转)
https://blog.csdn.net/MOESECSDN/article/details/78107888 在WPF项目中遇到这样的问题,做一下笔记.希望对自己和读者都有帮助. 在aap.con ...
随机推荐
- SIFT算法的应用--目标识别之Bag-of-words模型
原文:http://blog.csdn.net/v_JULY_v/article/details/6555899 SIFT算法的应用 -目标识别之用Bag-of-words模型表示一幅图像 作者:wa ...
- Linux清除磁盘上的RAID信息
我的笔记本是DELL的Inspiron 14z,原装存储器是由32G的固态硬盘和512G的机器硬盘组成.后来我自己又给它加了一个256G的固态硬盘,装并装上了CentOS,打算把500G的机械硬盘当资 ...
- BootStrap2学习日记17---导航路径和分页
导航路径 代码: <ul class="breadcrumb"> <li><a href="#">Home</a> ...
- SpringMvc多文件上传简单实现
public ResponseItem uploadFile(MultipartHttpServletRequest request,FileItem fileItem,PageData pd) { ...
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
转载自:http://blog.csdn.net/skl_tz/article/details/9009805 JPasswordField 用作密码的输入框,似乎很方便,但是,为了得到输入的内容,一 ...
- Oracle基础 (十四)其他函数
转换函数: TO_DATE:转换为日期 --将字符串转换为日期 SELECT TO_DATE('2014-12-31', 'yyyy-mm-dd') FROM DUAL; SELECT TO_DATE ...
- 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的错误. 导致问 ...
- python字符串反转
最一般的想法就是将字符串先转换成列表,倒置列表,再将列表转换为字符串 s = 'Hello world' l = list(s) l.reverse() python ''.join(l) 而pyth ...
- 1166 矩阵取数游戏[区间dp+高精度]
1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [ ...
- Unity之读取本地图片
1.下载Opencv for unity. 2.把OpenCVForUnity下的StreamingAssets拖到Assets下. 3.点击Tools->opencv for unity-&g ...