近两天项目中需要添加一个功能,是根据摄像头来读取二维码信息,然后根据读出来的信息来和数据库中进行对比显示数据。

  选择技术Zxing、WPFMediaKit。基本的原理就是让WPFmediaKit来对摄像头进行操作,然后Zxing这个库对图片进行分析大致就是这样。

  在后台中定义了定时器,用于解析当前摄像头的图像,然后直接读数据。

需要注意的是一定要引入 using WPFMediaKit.DirectShow.Controls; using ZXing;

public partial class YIDong : Page{public YIDong(){InitializeComponent();cb.ItemsSource = MultimediaUtil.VideoInputNames;//获得所有摄像头if (MultimediaUtil.VideoInputNames.Length > 0){cb.SelectedIndex = 0;//第0个摄像头为默认摄像头
            }else{MessageBox.Show("电脑没有安装任何可用摄像头");}cameraTimer.IsEnabled = false;cameraTimer.Interval = new TimeSpan(200); //执行间隔0.2秒cameraTimer.Tick += cameraTimer_Tick; ;}/// <summary>/// ZXING 二维码扫描类/// </summary>BarcodeReader codeReader = new BarcodeReader();/// <summary>/// 定时器/// </summary>DispatcherTimer cameraTimer = new DispatcherTimer();private void cameraTimer_Tick(object sender, EventArgs e){RenderTargetBitmap bmp = new RenderTargetBitmap((int)vce.ActualWidth, (int)vce.ActualHeight, 96, 96, PixelFormats.Default);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);Bitmap btiMap = new Bitmap(ms);var result = codeReader.Decode(btiMap);//解析条码if (result != null){string shelve_index = result.ToString();ObservableCollection<XModel.STORe_DetailVm> list = XDAL.STORE_goods_Detail.GetGoodsByShelve_Index(shelve_index);Dialog.OpenWindow open = Lib.pubMethod.GetOpenWindow(this);if (open != null){Application.Current.Properties["SweepList"] = list;open.CloseAsTrue();}}}}private void btnCapture_Click(object sender, RoutedEventArgs e){cameraTimer.Start();}private void Restart_Click(object sender, RoutedEventArgs e){cameraTimer.Stop();vce.Play();}private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e){//控件制定摄像头vce.VideoCaptureSource = (string)cb.SelectedItem;}

前台布局很简单,

 <Grid><Grid.ColumnDefinitions><ColumnDefinition Width="86*"/><ColumnDefinition Width="237*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="5*"/><RowDefinition Height="*"/><RowDefinition Height="*"/></Grid.RowDefinitions><StackPanel Background="LightBlue" Grid.Row="0" Grid.ColumnSpan="2"><wpfmedia:VideoCaptureElement x:Name="vce" Stretch="Fill" Width="auto" Height="auto" Margin="0" Grid.Row="0" RenderTransformOrigin="0.5,0.5"><wpfmedia:VideoCaptureElement.RenderTransform><TransformGroup><ScaleTransform/><SkewTransform/><TranslateTransform/></TransformGroup></wpfmedia:VideoCaptureElement.RenderTransform></wpfmedia:VideoCaptureElement></StackPanel><Label x:Name="label" Content="摄像头:" Grid.Row="1" Grid.Column="0"  Width="49" HorizontalAlignment="Right" Margin="0,14,0,4" /><ComboBox x:Name="cb" Style="{StaticResource Query_Combo}" Grid.Row="1" Width="204" HorizontalAlignment="Left" Margin="2,13,0,8" SelectionChanged="cb_SelectionChanged" Grid.Column="1"  /><Button  Content="开始" x:Name="btnCapture" Style="{StaticResource Query_Button}" Click="btnCapture_Click"  Width="50" Grid.Row="2" Grid.Column="1" Height="20" HorizontalAlignment="Left" Margin="9,10,0,14"/><Button  Content="暂停" x:Name="btnReStart" Style="{StaticResource Query_Button}" Click="Restart_Click" Width="50" Grid.Row="2" Grid.Column="1" Height="20" HorizontalAlignment="Left" Margin="67,11,0,15"/></Grid>

需要注意的是xaml一定要引入  xmlns:wpfmedia="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit" 。

效果如下。

转载于:https://www.cnblogs.com/ZaraNet/p/11400456.html

在WPF中开启摄像头扫描二维码(Media+Zxing)相关推荐

  1. h5端呼起摄像头扫描二维码并解析

    2016年6月29日补充: 最近做了一些与表单相关的项目,使用了h5的input控件,在使用过程中遇到了很多的坑.也包括与这篇文章相关的. 首先我们应该知道使用h5新提供的属性getUserMedia ...

  2. SLAM无人车通过上摄像头扫描二维码重定位

    SLAM无人车通过上摄像头扫描二维码重定位 slam 无人车扫描二维码重定位initpose 实现原理: 1.内参标定 2.外参标定得到相机相对于小车的安装坐标 3.通过功能包 ar_track_al ...

  3. Python实现PC摄像头扫描二维码,让你的电脑变身QR码识读器!

    目录 简介: 源代码: 源代码说明: 效果如下所示: 简介: 使用PC摄像机扫描二维码可以有很多应用场景,例如: 支付宝.微信支付等移动支付方式需要使用二维码进行支付,PC摄像机可以扫描这些支付二维码 ...

  4. PC端调用摄像头扫描二维码,拿到二维码信息

    PC端调用摄像头扫描二维码,拿到二维码信息 <template><el-dialogtitle="扫描设备二维码":visible.sync="dial ...

  5. C#生成二维码、调用摄像头扫描二维码

    二维码的生成和解码,有两个开源项目可以参考: 一个是google的zxing,另外一个是ThroughWork. zxing做的很全面,支持各种语言和平台,具体不多讲,自己查去.ThroughWork ...

  6. 生成和扫描二维码(ZXing库)

    生成和扫描二维码(ZXing库) 一.ZXing概述 ZXing是谷歌自己推出的一个开源源码的二维码框架,可以实现使用手机的摄像头完成条形码的扫描和解码. 二.整合ZXing框架 将预先获取的core ...

  7. 关于Unity调用摄像头扫描二维码与生成二维码的实现方法

    1.常用的生成二维码网址 https://cli.im/ 2.上官网下载二维码插件 http://zxingnet.codeplex.com/ 3.将下载的插件中zxing.unity.dll文件放入 ...

  8. 只需3个步骤,轻松解决程序员在Java中生成、扫描二维码难题

    条形码包含有关产品或公司的信息,以机器可读的形式直观地表示.条码广泛用于跟踪货物和库存管理.我们可以在 WPF 应用程序中轻松生成各种类型的条码.二维码广泛用于分享重要信息.对于不同的要求,您可能希望 ...

  9. 能在Windows CE上运行的的二维码识别系统,使用手机摄像头扫描二维码

    欧美和日本,二维码的使用比较广泛,最近看到一则新闻,我们国家也在航空服务中使用二维码了.二维码具有信息容量大.纠错能力强.可靠性高.成本低.防伪性好.持久耐用等一维条码所不具备的优良特点.二维码的种类 ...

  10. vue实现调用摄像头扫描二维码

    安装依赖:vue-qrcode-reader npm install vue-qrcode-reader -s 直接上代码 <template><div><div cla ...

最新文章

  1. Hyper-V 内存管理必须知道的
  2. 数学建模——K-means聚类模型Python代码
  3. Android Framework常用工具及LOG调试方法
  4. ISA2004 发布内部TCP/IP打印机
  5. c++11-decltype
  6. Dubbo源码-从HelloWorld开始
  7. Java JNI浅析(一)
  8. MacOS 好用的插件和图形界面程序
  9. [vue] vue项目有使用过npm run build --report吗?
  10. sqlmap地表最强sql注入检测工具学习使用
  11. golang实现的布隆过滤器_面试官:都 2020 年,你在干嘛?还不知道布隆过滤器
  12. 将文本写在图片上,自定义字体,自动换行,自定义行间距
  13. 酷派D530刷机指引之民间ROM
  14. 编译原理中单线箭头->和双线箭头=>有什么区别
  15. CopyOnWriteArrayList 有什么特点?
  16. JavaScript高级之42个英语单词
  17. linux双系统如何选择顺序,Ubuntu和Windows双系统选择开机顺序
  18. 【STM32F4系列】【HAL库】【自制库】WS2812控制(软件部分)
  19. android oreo 老机型,Android Oreo 通知新特性,这坑老夫先踩了
  20. nova3安装android10系统,一招搞定安卓机“久用必卡”顽疾:华为nova3i配备6GB超大运存...

热门文章

  1. orm框架有哪些_.net core 基于Dapper 的分库分表开源框架(coredata)
  2. python ** 运算符_Python学习第二天--运算符小结
  3. 电脑更新重启后黑屏_电脑黑屏重启还是黑屏的解决方法教程
  4. python tfidf特征变换_2 python 文本特征提取 CountVectorizer, TfidfVectorizer
  5. php 有序数组,php 归拢两个有序数组
  6. 怎么添加group_家居装修时,自由装修怎么进行设计,室内怎么改造更合适?
  7. iphone7home键按压失灵_iPhone home键失灵怎么办 iPad home键失灵解决办法【详解】
  8. vue移动端下拉切换页面_详解vue移动端 下拉刷新
  9. C/C++[codeup 1941]新版A+B
  10. AI 最新突破集锦 AI的瓶颈和进展 AI控制核聚变 AI预测蛋白质3D结构 Alpha Fold2 AI证明数学公式 自动驾驶 AI替代的硬件