using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_Common.Face { // 相机取帧及帧图象显示组件 public class CHS_Capture { // 返回相机个数 [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraGetCount", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern int SmCameraGetCount(); // 打开相机(根据相机索引号 nDeviceId) [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraOpen", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern IntPtr SmCameraOpen(int nDeviceId, int nWidth, int nHeight); // 打开相机(根据相机VID+PIC) [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraOpenEx", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern IntPtr SmCameraOpenEx(int nVid, int nPid, int nWidth, int nHeight); // 从打开的相机提取一帧视频数据 [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraGetFrame", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern int SmCameraGetFrame(IntPtr hCamera, IntPtr pFrameBuf, int bMirror, int bFlip); // 关闭相机 [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraClose", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern void SmCameraClose(IntPtr hCamera); // 创建视频帧显示对象(nWidth * nHeight 为视频帧的分辨率,hWnd 为显示窗口句柄) [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreviewCreate", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern IntPtr SmCameraPreviewCreate(int nWidth, int nHeight, IntPtr hWND); // 显示视频帧 [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreview", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern void SmCameraPreview(IntPtr hCameraPreview, IntPtr pFrame); // 显示视频帧及人脸框(weight为边框的厚度) [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreviewFace", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern void SmCameraPreviewFace(IntPtr hCameraPreview, IntPtr pFrame, int left, int top, int right, int bottom, int weight, int color); // 释放视频帧显示对象 [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreviewDestroy", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public static extern void SmCameraPreviewDestroy(IntPtr hCameraPreivew); } }