摄像头操作:WPFMediaKit(from www.sysoft.net.cn)

1、主程序中头部加入: xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"> 2、主窗口中加入一个提供选择摄 像头的combox <comboBox name="caps" ></comboBox> 3、加入wpfmediakit控件 <WPFMediaKit:VideoCaptureElement x:Name="CaptureElement" Grid.Row="1" /> 4、加入拍照按钮 <button name=‘btncap‘ value=‘拍照‘>
5、窗体加载时写入代码:

private void Window_Loaded(object sender, RoutedEventArgs e)

{//复选数据源指定为MultimediaUtil类的VideoInputNames属性,这是一个获取本主可控摄像头设备名称的集合。

cmbcapture.ItemsSource = MultimediaUtil.VideoInputNames; // 如果存在摄像设备,则将第一设备设为默认选择项目。

if (MultimediaUtil.VideoInputNames.Length > 0)

{

cmbcapture.SelectedIndex = 0;

} // 否则提示不存在摄像设备。

else

{

MessageBox.Show("没有摄像头");

}

}

//comboBox执行操作时,触发SelectionChanged事件,将视频显示设备的源提定为 combox指定的设备。即确定显示设备,到这步,则可以实现图像的产时预览了。

private void cmbcapture_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

CaptureElement.VideoCaptureSource = (string)cmbcapture.SelectedItem;

}

//执行拍照操作----

private void Button_Click(object sender, RoutedEventArgs e)

{ // 建立目标渲染图像器,高度为前台控件实显高度,此处不能使用.width或.height属性,否则出现错误。

RenderTargetBitmap bitmap = new RenderTargetBitmap((int)CaptureElement.ActualWidth,(int)CaptureElement.ActualHeight,96,96,PixelFormats.Default); // 为了避免图像抓取出现黑边现象,需要对图象进行重新测量及缩放,执行以下操作,关键……

CaptureElement.Measure(CaptureElement.RenderSize);

CaptureElement.Arrange(new Rect(CaptureElement.RenderSize)); // 指定图像渲染目标

bitmap.Render(CaptureElement); // 建立图像解码器。类型为jpeg

BitmapEncoder encoder = new JpegBitmapEncoder(); // 将当前渲染器中渲染位图作为一个位图帧加入解码器,进行解码,取得数据流。

encoder.Frames.Add(BitmapFrame.Create(bitmap)); // 建立内存流,将得到解码图像流写入内存流。

using (MemoryStream stream = new MemoryStream())

{

encoder.Save(stream);

byte[] pics = stream.ToArray(); // 将流以文件形式存储于计算机中。

File.WriteAllBytes(@"D:\2.jpg", pics);

} // 预览效果暂停。

CaptureElement.Pause();

}

注:以上效果实现过程中,可以通过CaptureElement.Plary(),重新激活设备,实现重拍。 虽然上述可以基本解决拍照问题,但仍有部分问题存在,就是黑边。解决方式,自己试着通过处理CaptureElement控件,即前台直接为其指定大小,但这个大小指定一定要与当前电脑的视频摄像设备的正常分辩率相匹配,只要比例 相等即可,大小可以不等,这样拍出的内容就不存在黑边了,或许有更好的办法,留待以后研究……

时间: 2024-07-30 07:40:14

摄像头操作:WPFMediaKit(from www.sysoft.net.cn)的相关文章

摄像头操作

1.xaml <Window x:Class="DemoWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width

验证码识别相关命令(from www.sysoft.net.cn)

1.开始-运行-cmd,回车进入dos运行环境. 2.转入合并后的图并所在的路径:如 cd E:\propic 3.输入:tesseract.exe  mainpic.tif (这是处理过的图片的名字) mainpic(这个是结果名,可以随机指定,最好直接指定与图片相同)  bach.nochop makebox  回车,直至图片处理完成. 4.完成后,如果没有报错的情况下,可以看到在相 同的目录下生成有一个mainpic.box文件,此时,再次打开jTessBoxEditor.jar,通过文件

delphi xe10 麦克风、摄像头操作

TakePhotoFromCameraAction1: TTakePhotoFromCameraAction; // 通过手机摄像头获取图片TakePhotoFromLibraryAction1: TTakePhotoFromLibraryAction; //获取手机已存在图片ShowShareSheetAction1: TShowShareSheetAction;//用其它程序分享图片(Bitmap.Assign();) 获取麦克风设置 FMX.MediaFMicrophone: TAudio

CKEditor上传图片—配置CKFinder(from www.sysoft.cc www.sysoft.net.cn)

CKEditor上传图片—配置CKFinder在网站开发中,如果有发布类似新闻的图文混排需求时,CKEditor不失为一个很好的选择,下载地址如下: http://ckeditor.com/download 它的前身是FCKEditor,随着它的更新,上传图片的功能被分离出去了,现在如果需要实现上传图片,要么自己写代码,还有一种方法是使用CKFinder,下载地址如下: http://ckfinder.com/download 下面详细描述一下使用它们的时候如何配置. CKEditor我下载的是

大数据拷贝:SqlBulkCopy(from www.sysoft.net.cn)

在ado.net向数据库进行大数据(超过100000行数据)写入时,普通方式会很费时,但ado.net提供一个SqlBulkCopy类,可以大提高数据插入的速度. using(SqlBulkCopy sqlbulkcopy=new SqlBulkCopy(constr)//建立对象实例 ,参数为数据库连接字符串{    sqlbulkcopy.DestinationTableName=tbname//指定将数据导入数据库的工作表    sqlbulkcopy.ColumnMappings.Add

安装fso组件(from www.sysoft.net.cn)

现在越来越多的网站使用动态生成静态页的技术,就是信息在写入数据库的同时,使用系统的FSO组件来生成html格式的静态页,这样能提高用户的访问速度.这样系统在配置的时候,需要载入FSO组件. 按以下步骤进行: 1.首先在系统目录中查找scrrun.dll,如果存在这个文件,请跳到第三步,如果没有,请执行第二步. 2.在系统安装盘i386目录中找到scrrun.dl_,用winrar解压缩,得scrrun.dll,然后复制到你的系统目录c:windowssystem32目录中. 3.运行regsvr

opencvbase 实现opencv打开摄像头和初步处理等效果操作(附源码)

// TwoCameraOnTimer2Dlg.cpp : 实现文件 /* CvMat, Mat, IplImage之间的互相转换 IpIImage -> CvMat CvMat matheader; CvMat * mat = cvGetMat(img, &matheader); CvMat * mat = cvCreateMat(img->height, img->width, CV_64FC3); cvConvert(img, mat) IplImage -> Mat

c# winform调用摄像头识别二维码

首先我们需要引用两个第三方组件:AForge和zxing. Aforge是摄像头操作组件,zxing是二维码识别组件.都是开源项目.避免重复造轮子. 其实一些操作代码我也是参照别人的,若侵犯您的版权,请和我联系. 此博客仅供技术交流. 下载和用法大家可以自行搜索下. 首先获取所有可用的摄像头设备,并加入到comboBox1中 1 private void getCamList() 2 { 3 try 4 { 5 //AForge.Video.DirectShow.FilterInfoCollec

python-数据类型,元祖,列表,字典,文件操作篇

python----数据类型,元祖,列表,字典,文件操作篇1.布尔类型:Ture False 非0即真 非空即真 空(None a=''空字符串) 条件判断返回的都是True或者False2.字符串: 注:字符串的所有操作,不改变原字符串值 常用的操作方法 .count() .find() #回不存在的元素,返回-1 .join() .encode() .decode()#bytes类型才有的(bytes:二进制类型) .endswith('.txt')#字符串是否以xx结尾 startswit