Camera programming Select BLOG in Libiegoupan

xiaoxiao2021-03-06  55

Camera Programming Selects the program from the Libiegoupan's Blog Keyword Camera programming. This time is a video acquisition program, which found a program that drives the camera written by C # on the foreign website. After transformation and debugging, then after installing the camera, you can usually find an Avicap32.dll file This is a class for the idea of ​​the idea; use system.Runtime.InterOpServices; namespace webcam {? ///? /// Avicap Abstract.

? ///? Public class showVideo? {?? // showVideo calls ?? [DllImport ( "avicap32.dll")] public static extern IntPtr capCreateCaptureWindowA (byte [] lpszWindowName, int dwStyle, int x, int y, int nWidth , int nHeight, IntPtr hWndParent, int nID); ?? [DllImport ( "avicap32.dll")] public static extern bool capGetDriverDescriptionA (short wDriver, byte [] lpszName, int cbName, byte [] lpszVer, int cbVer) ;? ? [DllImport ( "User32.dll")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, bool wParam, int lParam); ?? [DllImport ( "User32.dll")] public static extern bool SendMessage (IntPtr hWnd , int wMsg, short wParam, int lParam); ?? [DllImport ( "User32.dll")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, short wParam, FrameEventHandler lParam); ?? [DllImport ( "User32. dll ")] public static extern bool SendMessage (IntPtr hWnd, int wMsg, int wParam, ref BITMAPINFO lParam); ?? [DllImport (" User32.dll ")] public static extern int SetWindowPos (IntPtr hWnd, int hWndInsertAfter, int x , int y, int CX, int CY , Int wFlags); ?? [DllImport ( "avicap32.dll")] public static extern int capGetVideoFormat (IntPtr hWnd, IntPtr psVideoFormat, int wSize); ??? // Constants ?? public const int WM_USER = 0x400; ?? public const int WS_CHILD = 0x40000000; ?? public const int WS_VISIBLE = 0x10000000; ?? public const int SWP_NOMOVE = 0x2; ?? public const int SWP_NOZORDER = 0x4; ?? public const int WM_CAP_DRIVER_CONNECT = WM_USER 10; ?? public const int WM_CAP_DRIVER_DISCONNECT = WM_USER 11; ?? public const int WM_CAP_SET_CALLBACK_FRAME = WM_USER 5; ?? public const int WM_CAP_SET_PREVIEW = WM_USER 50; ?? public const int WM_CAP_SET_PREVIEWRATE = WM_USER 52;

?? public const int WM_CAP_SET_VIDEOFORMAT = WM_USER 45; ???? ?? // Structures ?? [StructLayout (LayoutKind.Sequential)] public struct VIDEOHDR ?? {??? [MarshalAs (UnmanagedType.I4)] public int lpData ; ??? [MarshalAs (UnmanagedType.I4)] public int dwBufferLength; ??? [MarshalAs (UnmanagedType.I4)] public int dwBytesUsed; ??? [MarshalAs (UnmanagedType.I4)] public int dwTimeCaptured; ??? [ MarshalAs (UnmanagedType.I4)] public int dwUser; ??? [MarshalAs (UnmanagedType.I4)] public int dwFlags; ??? [MarshalAs (UnmanagedType.ByValArray, SizeConst = 4)] public int [] dwReserved; ??} ??? [StructLayout (LayoutKind.Sequential)] public struct BITMAPINFOHEADER ?? {??? [MarshalAs (UnmanagedType.I4)] public Int32 biSize; ??? [MarshalAs (UnmanagedType.I4)] public Int32 biWidth; ??? [MarshalAs (UnmanagedType.I4)] public Int32 biHeight; ??? [MarshalAs (UnmanagedType.I2)] public short biPlanes; ??? [MarshalAs (UnmanagedType.I2)] public short biBitCount; ??? [MarshalAs (UnmanagedType. I4)] public int32 bicompression; ??? [marshalas (unmanagedtype.i4)] PUBL ic Int32 biSizeImage; ??? [MarshalAs (UnmanagedType.I4)] public Int32 biXPelsPerMeter; ??? [MarshalAs (UnmanagedType.I4)] public Int32 biYPelsPerMeter; ??? [MarshalAs (UnmanagedType.I4)] public Int32 biClrUsed ;? ?? [MarshalAs (UnmanagedType.I4)] public Int32 biClrImportant; ??} ??? [StructLayout (LayoutKind.Sequential)] public struct BITMAPINFO ?? {??? [MarshalAs (UnmanagedType.Struct, SizeConst = 40)] public BITMAPINFOHEADER bmiHeader; ??? [MarshalAs (UnmanagedType.ByValArray, SizeConst = 1024)] public Int32 [] bmiColors; ??} ???? ?? public delegate void FrameEventHandler (IntPtr lwnd, IntPtr lpVHdr); ????? ? // public methods ?? public static object GetStructure (intptr ptr, valueetype structure ?? {??? Return Marshal.PTRTRTOSTRUCTURE (PTR, Structure.gettype ());

??} ?? Public static object getStructure (int Ptr, Valuetype Structure) ?? {??? Return GetStructure (New INTPTR (PTR), STRUCTURE); ??} ???? ?? public static void copy (INTPTR PTR, BYTE [] DATA) ?? {??? Marshal.copy (PTR, DATA, 0, DATA.LENGTH); ??} ???? ?? public static void copy (int Ptr, Byte [] DATA) ?? {??? copy (new intptr (ptr), data); ??} ???? ?? public static int sizeof (Object structure) ?? {??? Return Marshal.sizeof (Structure); ?? }?} // Web Camera Class? PUBLIC CLASS Webcamera? {?? // constructur ?? public Webcamera (INTPTR HANDLE, INT WIDTH, INT Height) ?? {??? mcontrolptr = handle; ??? mWidth = Width ??? mHeight = height; ??} ???? ?? // delegate for frame callback ?? public delegate void RecievedFrameEventHandler (byte [] data); ?? public event RecievedFrameEventHandler RecievedFrame; ???? ?? private IntPtr lwndC; // Holds the unmanaged handle of the control ?? private IntPtr mControlPtr; // Holds the managed pointer of the control ?? private int mWidth; ?? private int mHeight; ???? ?? private showVideo.FrameEventHandler mFrameEventHandler; // de Legate Instance for the Frame Callback - Must Keep Alive! GC SHOULD NOT Collect it ???? ?? // Close the Web Camera ?? public void closewebcam () ?? {??? this.capdriverdisconnect (this.LWNDC); ??} ???? ?? // start the Web Camera ?? public void startwebcam () ?? {??? Byte [] lpszname = new byte [100]; ??? Byte [] lpszver = new byte [ 100]; ????????? ??? showVideo.capGetDriverDescriptionA (0, lpszName, 100, lpszVer, 100); ??? this.lwndC = showVideo.capCreateCaptureWindowA (lpszName, showVideo.WS_VISIBLE showVideo.WS_CHILD , 0, 0, MWidth, 0); ???????????? f (this.LWNDC, 0)) ??? {???? this.cappreview (this.LWNDC, 66); ???? this.cappreview (this.lwndc, true); ???? showvideo.bitmapinfo bitmapinfo =

new showVideo.BITMAPINFO (); ???? bitmapinfo.bmiHeader.biSize = showVideo.SizeOf (bitmapinfo.bmiHeader); ???? bitmapinfo.bmiHeader.biWidth = 352; ???? bitmapinfo.bmiHeader.biHeight = 288; ???? bitmapinfo.bmiheader.biplanes = 1; ???? bitmapinfo.bmiheader.bibitcount = 24; ???? this.capsetVideoFormat (this.lwndc, ref bitmapinfo, showvideo.sizeof (bitmapinfo);??? ? this.mFrameEventHandler = new showVideo.FrameEventHandler (FrameCallBack); ???? this.capSetCallbackOnFrame (this.lwndC, this.mFrameEventHandler); ???? showVideo.SetWindowPos (this.lwndC, 0, 0, 0, mWidth, mHeight, 6); ???} ??} ??? // private functions ?? private bool capDriverConnect (IntPtr lwnd, short i) ?? {??? return showVideo.SendMessage (lwnd, showVideo.WM_CAP_DRIVER_CONNECT, i, 0); ??} ??? private bool capDriverDisconnect (IntPtr lwnd) ?? {??? return showVideo.SendMessage (lwnd, showVideo.WM_CAP_DRIVER_DISCONNECT, 0, 0); ??} ???? ?? private bool capPreview (INTPTR LWND, BOOL F) ?? {??? Return ShowVideo.sendMessage (lwnd, showvideo.wm_cap_set_preview, f, 0); ??} ??? priva te bool capPreviewRate (IntPtr lwnd, short wMS) ?? {??? return showVideo.SendMessage (lwnd, showVideo.WM_CAP_SET_PREVIEWRATE, wMS, 0); ??} ???? ?? private bool capSetCallbackOnFrame (IntPtr lwnd, showVideo. FrameEventHandler lpProc) ?? {???? ??? return showVideo.SendMessage (lwnd, showVideo.WM_CAP_SET_CALLBACK_FRAME, 0, lpProc); ??} ??? private bool capSetVideoFormat (IntPtr hCapWnd, ref showVideo.BITMAPINFO BmpFormat, int CapFormatSize ) ?? {??? return showVideo.SendMessage (hCapWnd, showVideo.WM_CAP_SET_VIDEOFORMAT, CapFormatSize, ref BmpFormat); ??} ??? private void FrameCallBack (IntPtr lwnd, IntPtr lpVHdr) ?? {??? showVideo.VIDEOHDR videoHeader = new showvideo.videohdr (); ??? byte [] videodata; ???????? videoheader =

(ShowVideo.VIDEOHDR) showVideo.GetStructure (lpVHdr, videoHeader); ??? VideoData = new byte [videoHeader.dwBytesUsed]; ??? showVideo.Copy (videoHeader.lpData, VideoData); ??? if (this.RecievedFrame! ? = null) ???? this.RecievedFrame (VideoData); ??}}} particular call as follows: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using Summary description of system.data; use webcam; namespace webcam {? ///? /// Form1. ? /// public class Form1: System.Windows.Forms.Form {?? private System.Windows.Forms.Panel panelPreview; ?? private System.Windows.Forms.Button b_play; ?? private System.Windows.Forms?? .Button b_stop; ?? /// ?? /// The required designer variable. ?? /// ?? private system.componentmodel.container components = null; ?? Webcamera wc; ?? public form1 () ?? {??? // ??? // Windows Form Designer Support ??? // ??? INITIALIZECMPONENT (); ??? // ??? // Todo: Add any constructor code after INITIALIZECOMPONENT calls ??? // ??} ?? /// ?? // / Clean all the resources being used. ?? /// ?? protected override void dispose (bool disposing) ?? {??? f (disponents! = null) ???? {????? Components.dispose (); ????} ???} ??? base.dispose (Disposing); ??} ?? # Region Windows Form Designer generated code ?? /// ?? //// Designer supports the required method - do not use the code editor to modify the contents of this method.

?? /// ?? private void initializecomponent () ?? {??? this.b_play = new system.windows.forms.Button (); ??? this.Panelpreview = new system.windows.Forms.Panel () ; ??? this.b_stop = new system.windows.Forms.Button (); ??? this.suspendlayout (); ??? // ??? // b_play ??? // ??? THIS.B_PLAY .Location = new system.drawing.point (280, 368); ??? this.b_play.name = "b_play"; ??? this.b_play.tabindex = 0; ??? this.b_play.text = "& play "; ??? this.b_play.click = new system.eventhandler (this.button1_click); ??? // ??? // ??? this.panelpreview.location = new system. Drawing.point (8, 8); ??? this.panelpreview.name = "panelpreview"; ??? this.panelpreview.size = new system.drawing.size (344, 272); ??? this.panelpreview. TabINDEX = 1; ??? // ??? // b_stop ??? // ??? this.b_stop.enabled = false; ??? this.b_stop.location = new system.drawing.point (360, 368 ); ??? this.b_stop.name = "b_stop"; ??? this.b_stop.tabindex = 2; ??? this.b_stop.text = "& stop"; ??? this.b_stop.click = new System.eventhandler (this.b_stop_click); ??? // ??? // Form1 ??? // ??? T His.autoscalebasesize = new system.drawing.size (6, 14); ??? this.clientsize = new system.drawing.size (464, 413); ??? this.controls.add (this.b_stop);? ?? this.Controls.add (this.PanelPreview); ??? this.controls.add (this.b_play); ??? this.maximizebox = false; ??? this.minimizebox = false; ???. Name = "form1"; ??? this.text = "Goodview Test Web Camera"; ??? this.load = new system.eventhandler (this.form1_load); ??? this.ResumeLayout (false); ?? } ?? # endregion ?? /// ?? // The primary entry point of the application.

转载请注明原文地址:https://www.9cbs.com/read-115581.html

New Post(0)