C#用摄像头抓取图像.doc

上传人:豆**** 文档编号:17407442 上传时间:2022-05-23 格式:DOC 页数:4 大小:208KB
返回 下载 相关 举报
C#用摄像头抓取图像.doc_第1页
第1页 / 共4页
C#用摄像头抓取图像.doc_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《C#用摄像头抓取图像.doc》由会员分享,可在线阅读,更多相关《C#用摄像头抓取图像.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流C#用摄像头抓取图像.精品文档.C# 如何用摄像头抓取图像,如何把图像保存到硬盘 收藏 using System;using System.Runtime.InteropServices;using System.Drawing;using System.Drawing.Imaging;namespace WeightSystem/ / 一个控制摄像头的类/ public class Pick private const int WM_USER = 0x400; private const int WS_CHILD = 0x40000000;

2、 private const int WS_VISIBLE = 0x10000000; private const int WM_CAP_START = WM_USER; private const int WM_CAP_STOP = WM_CAP_START + 68; private const int WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10; private const int WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11; private const int WM_CAP_SAVEDIB = WM_

3、CAP_START + 25; private const int WM_CAP_GRAB_FRAME = WM_CAP_START + 60; private const int WM_CAP_SEQUENCE = WM_CAP_START + 62; private const int WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20; private const int WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63; private const int WM_CAP_SET_OVERLAY = WM

4、_CAP_START + 51; private const int WM_CAP_SET_PREVIEW = WM_CAP_START + 50; private const int WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6; private const int WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2; private const int WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3; private const int WM_CAP_

5、SET_CALLBACK_FRAME = WM_CAP_START + 5; private const int WM_CAP_SET_SCALE = WM_CAP_START + 53; private const int WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52; public static int WM_CAP_DLG_VIDEOSOURCE = (WM_CAP_START + 42); /选择摄像头 private IntPtr hWndC; private bool bStat = false; private IntPtr mContro

6、lPtr; private int mWidth; private int mHeight; private int mLeft; private int mTop; / / 初始化摄像头 / / 控件的句柄 / 开始显示的左边距 / 开始显示的上边距 / 要显示的宽度 / 要显示的长度 public Pick(IntPtr handle, int left, int top, int width, int height) mControlPtr = handle; mWidth = width; mHeight = height; mLeft = left; mTop = top; DllI

7、mport(avicap32.dll) private static extern IntPtr capCreateCaptureWindowA(byte lpszWindowName, int dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, int nID); DllImport(avicap32.dll) private static extern int capGetVideoFormat(IntPtr hWnd, IntPtr psVideoFormat, int wSize); DllImport(

8、User32.dll) private static extern bool SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam); / / 开始显示图像 / public void Start() if (bStat) return; bStat = true; byte lpszName = new byte100; hWndC = capCreateCaptureWindowA(lpszName, WS_CHILD | WS_VISIBLE, mLeft, mTop, mWidth, mHeight, mControlPtr

9、, 0); if (hWndC.ToInt32() != 0) SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0); SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0); SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0); SendMess

10、age(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0); SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0); return; / / 停止显示 / public void Stop() SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0); bStat = false; / / 抓图 / / 要保存bmp文件的路径 public void GrabImage(string path) In

11、tPtr hBmp = Marshal.StringToHGlobalAnsi(path); SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt32(); / / 录像 / / 要保存avi文件的路径 public void Kinescope(string path) IntPtr hBmp = Marshal.StringToHGlobalAnsi(path); SendMessage(hWndC, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, hBmp.ToInt32(); SendMessage(hWndC, WM_C

12、AP_SEQUENCE, 0, 0); / / 停止录像 / public void StopKinescope() SendMessage(hWndC, WM_CAP_STOP, 0, 0); / / public void SetShow() SendMessage(hWndC, WM_CAP_DLG_VIDEOSOURCE, 0, 0);/把抓到的图像保存到硬盘 private void button3_Click(object sender, EventArgs e) try SaveFileDialog SaveFileDialog1=new SaveFileDialog(); Sa

13、veFileDialog1.Filter = bmp files (*.bmp)|*.bmp|jpg files (*.jpg)|*.jpg|All files (*.*)|*.*; SaveFileDialog1.FilterIndex = 2; /默认图片保存格式 JPG SaveFileDialog1.RestoreDirectory = true; SaveFileDialog1.FileName = Pic01; /默认图片保存名称 Pic01 if (SaveFileDialog1.ShowDialog() = DialogResult.OK) pk.GrabImage(SaveFileDialog1.FileName); catch本文来自CSDN博客,转载请标明出处:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁