zoukankan      html  css  js  c++  java
  • WPFMediaKit照相功能

    最近写的一个WPF照相功能,往各位吐槽,提供优化

    在WPF 设计器中添加如下代码

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

    添加显示摄像头图像控件

    <wpfmedia:VideoCaptureElement DockPanel.Dock="Top" Name="captureElement" Margin="0,33,0,37"/>

    在cs代码文档中添加如下代码

    在引用程序集中添加WPFMediaKit程序集

    引用类名空间,添加如下代码

    using WPFMediaKit;
    using WPFMediaKit.DirectShow.Controls;

    加载摄像头

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                //加载摄像头
                cmbCameras.ItemsSource = MultimediaUtil.VideoInputNames;
                if (MultimediaUtil.VideoInputNames.Length > 0)
                {
                    cmbCameras.SelectedIndex = 0;
                }
                else
                {
                    MessageBox.Show("没有可用摄像头!");
                    BtnCap.IsEnabled = false;
                    BtnOk.IsEnabled = false;
                    BtnNew.IsEnabled = false;
                }
            }

    拍照

     private void BtnCap_Click(object sender, RoutedEventArgs e)
            {
                //captureElement. 怎么抓取高清的原始图像
                RenderTargetBitmap bmp = new RenderTargetBitmap((int)captureElement.ActualWidth, (int)captureElement.ActualHeight,
                    96, 96, PixelFormats.Default);
                bmp.Render(captureElement);
                BitmapEncoder encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                using (MemoryStream ms = new MemoryStream())
                {
                    encoder.Save(ms);
                    CaptureData = ms.ToArray();//将拍照的图像转化为二进制数组
                }
            }

    确定拍照

     private void BtnOk_Click(object sender, RoutedEventArgs e)
            {
                if (CaptureData != null)
                {
                    DialogResult = true;
                }
                else
                {
                    MessageBox.Show("未拍照图像");
                    return;
                }
            }

    重拍

    private void BtnNew_Click(object sender, RoutedEventArgs e)
            {
                captureElement.Play();
            }

    摄像头切换

    private void cmbCameras_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                captureElement.VideoCaptureSource = (string)cmbCameras.SelectedItem;
            }

    将二进制转化成png

    private BitmapImage ShowImage(byte[] imgbytes)
            {
                MemoryStream stream = new MemoryStream(imgbytes);
                BitmapImage bmpImg = new BitmapImage();
                bmpImg.BeginInit();
                bmpImg.StreamSource = stream;
                bmpImg.EndInit();
                return bmpImg;
            }

    图片

  • 相关阅读:
    SQL Server创建索引的技巧分析
    SQL Server创建索引
    kmp算法的应用
    相交环的面积
    Rebranding
    Olympiad
    找新朋友
    卡特兰数
    越狱
    Wolf and Rabbit
  • 原文地址:https://www.cnblogs.com/tuqun/p/3635164.html
Copyright © 2011-2022 走看看