社区
游戏开发
帖子详情
如何再程序中直接控制视频捕获卡的亮度,对比度,色调,饱和度?
jiuyi
2000-05-25 08:34:00
不想用capDlgVideoSource()
可有其他办法直接控制brightness,contrast,saturation,hue各项功能?
...全文
170
5
打赏
收藏
如何再程序中直接控制视频捕获卡的亮度,对比度,色调,饱和度?
不想用capDlgVideoSource() 可有其他办法直接控制brightness,contrast,saturation,hue各项功能?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiuyi
2000-05-26
打赏
举报
回复
好象所有的采集卡都支持video for window
用采集卡的SDK就有一定的局限性了,
没有其他办法了吗?
我见到有可以直接修改的软件,不知是如何实现的。
Liubin
2000-05-25
打赏
举报
回复
需要video for window 的采集卡,不然就要采集卡的SDK了。
sanhan
2000-05-25
打赏
举报
回复
比较直接的回答是,一般不行。没有标准的办法。
但是对不同的采集卡,自带的开发包通常提供扩充功能,应该会解决相应问题。
有时更改注册表或者初始化文件也是一种可能的办法。
最好告诉我你用什么采集卡。
sanhan
2000-05-25
打赏
举报
回复
设置这些参数的对话框是驱动程序弹出的,不是瘟痘弹出的。
MS基本没有办法。不信就去查吧。
当初我写驱动的时候还自己扩充了几个消息。要是有标准接口就省事了。
假如你能找到一个标准接口,我给你100分。
jiuyi
2000-05-25
打赏
举报
回复
最好是通用的采集卡。
我想既然MS可以做到,就一定有方法。(-;
1998 Cam_1.8.4
1998 Cam 1998 Cam是一个带有日期戳的拍立得,它能让你美丽的照片和
视频
看起来具有模拟胶片的珍贵复古感。那是90年代最流行的复古相机。这个应用
程序
不仅有 流行胶片滤镜 还有特效镜头,胶片亭,宝丽来相机,漏光,灰尘,颗粒过滤器的效果。 ? 1998 Camera是当下时尚的相机应用
程序
。它对喜欢拍照,编辑,分享照片和
视频
在社交网络上的年轻人甚至是专业的摄影师而言非常有用。 ? 特点: - 100+ 滤镜:胶片,怀旧,复古,黑白,场景,肖像,专业,心情,风景,颜色增强 - 实时预览 - 逼真的3D效果 - 经典的日期时间戳 - 胶片灰尘,颗粒过滤器,随机漏光过滤器 - 肖像和风景 - 自拍 - 在照片编辑器
中
拍照后编辑并添加滤镜或效果 -
捕获
照片和
视频
时实时更改滤镜,效果和强度 - 先进的裁剪/修剪功能:裁切图像,倾斜图像,摆正图像 - 先进的照片和
视频
编辑器,能够改变任何图像和
视频
的属性:更改
亮度
,调整
对比度
,调整
饱和度
,调整鲜艳度,曝光,褪色,温暖,
色调
,锐化,颗粒 -自动保存照片到图库 -从图库导入照片,
视频
-无水印
安卓照片编辑器 Photo Editor 5.6
中
文多语免费版.zip
照片编辑器是用于照片处理的简单应用
程序
。Photo Editor 是照片的高级编辑器,可为您的手机提供多种照片处理功能。您可以执行简单的任务来增强照片效果,例如通过修改曲线等高级操作来选择滤镜。调整颜色,添加效果,旋转,裁剪,调整大小,构图,克隆和在照片上绘制。颜
色调
整选项包括色相,
饱和度
,
对比度
和
亮度
。此外,“照片编辑器”为您的照片提供许多效果,包括伽玛校正,自动
对比度
,自动
色调
,模糊,锐化,油漆,素描,黑白高
对比度
,棕褐色等。 照片编辑器 Photo Editor
中
文版照片编辑器 Photo Editor
中
文版 Photo Editor 特色 *调整颜色,添加效果,构图,克隆并在照片上绘制 *曲线界面,可微调颜色 *绘图工具 *添加文本,图像或形状 *易于旋转,裁剪或调整照片大小 *透视,红眼,白平衡和背光校正 *使用触摸和缩小缩放界面轻松进行编辑 *使用图库和相机
中
的照片 *将图像保存为JPEG,PNG,GIF,WebP和PDF。灵活
控制
JPEG质量。 *查看,编辑或删除元数据(EXIF,IPTC,XMP) *将最终结果保存为图库,墙纸或SD
卡
上 *通过电子邮件,Picasa,Facebook,Twitter等共享照片。 *批处理,裁剪(拼图),压缩为ZIP,创建PDF,GIF动画 *网页
捕获
,
视频
捕获
(ICS +) 语言支持:英语,韩语,俄语,西班牙语,荷兰语,芬兰语,德语,法语,日语,葡萄牙语(巴西),意大利语,加泰罗尼亚语,繁体
中
文,希伯来语,简体
中
文,捷克语,罗马尼亚语,波兰语,匈牙利语,瑞典语,希腊文,阿拉伯文,土耳其文,孟加拉文,印尼文,波斯文,越南文,马来文,阿塞拜疆文,北印度文
Android平台的崩溃
捕获
机制及实现
Android平台的崩溃
捕获
机制
视频
教程,该课程主要对Java崩溃和Native崩溃的
捕获
机制进行分析,并结合简单的实例演示实现方法。讲师介绍:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于
中
科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。
海康
视频
卡
动态库
using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; namespace DS40XXSDK { #region enum ///
/// 板
卡
类型 ///
public enum BOARD_TYPE_DS : uint { DS400XM = 0, //M
卡
DS400XH = 1, //H
卡
DS4004HC = 2, //4004HC DS4008HC = 3, //4008HC DS4016HC = 4, //4016HC DS4001HF = 5, //4001HF DS4004HF = 6, //4004HF DS4002MD = 7, //4002MD DS4004MD = 8, //4004MD DS4016HCS = 9, //4016HCS DS4002HT = 10, //4002HT DS4004HT = 11, //4004HT DS4008HT = 12, //4008HT DS4004HC_PLUS = 13, //4004HC+ DS4008HC_PLUS = 14, //4008HC+ DS4016HC_PLUS = 15, //4016HC+ DS4008HF = 16, //4008HF DS4008MD = 17, //4008MD DS4008HS = 18, //4008HS DS4016HS = 19, //4016HS INVALID_BOARD_TYPE = 0xffffffff, } ///
///
视频
预览格式 ///
public enum TypeVideoFormat { vdfRGB8A_233 = 0x00000001, vdfRGB8R_332 = 0x00000002, vdfRGB15Alpha = 0x00000004, ///
/// 16位RGB
视频
压缩格式 ///
vdfRGB16 = 0x00000008, ///
/// 24位RGB
视频
压缩格式 ///
vdfRGB24 = 0x00000010, vdfRGB24Alpha = 0x00000020, vdfYUV420Planar = 0x00000040, ///
/// YUV422
视频
压缩格式 ///
vdfYUV422Planar = 0x00000080, vdfYUV411Planar = 0x00000100, vdfYUV420Interspersed = 0x00000200, vdfYUV422Interspersed = 0x00000400, vdfYUV411Interspersed = 0x00000800, vdfYUV422Sequence = 0x00001000, /* U0, Y0, V0, Y1: For VO overlay */ vdfYUV422SequenceAlpha = 0x00002000, /* U0, Y0, V0, Y1: For VO overlay, with low bit for alpha blending */ vdfMono = 0x00004000, /* 8 bit monochrome */ vdfYUV444Planar = 0x00008000, }; ///
///
视频
制式 ///
public enum VideoStandard_t : uint { ///
/// 无
视频
信号 ///
StandardNone = 0x80000000, ///
/// NTSC制式 ///
StandardNTSC = 0x00000001, ///
/// PAL制式 ///
StandardPAL = 0x00000002, StandardSECAM = 0x00000004, } ; ///
/// 编码图像分辨率 ///
public enum PictureFormat_t { ENC_CIF_FORMAT = 0, ENC_QCIF_FORMAT = 1, ENC_2CIF_FORMAT = 2, ENC_4CIF_FORMAT = 3, ENC_QQCIF_FORMAT = 4, ENC_CIFQCIF_FORMAT = 5, ENC_CIFQQCIF_FORMAT = 6, ENC_DCIF_FORMAT = 7 }; ///
/// 码流
控制
方式 ///
public enum BitrateControlType_t { ///
/// 变码率 ///
brCBR = 0, ///
/// 恒定码率 ///
brVBR = 1, }; public enum FrameType_t { PktError = 0, PktIFrames = 0x0001, PktPFrames = 0x0002, PktBBPFrames = 0x0004, PktAudioFrames = 0x0008, PktMotionDetection = 0x00010, PktDspStatus = 0x00020, PktOrigImage = 0x00040, PktSysHeader = 0x00080, PktBPFrames = 0x00100, PktSFrames = 0x00200, PktSubIFrames = 0x00400, PktSubPFrames = 0x00800, PktSubBBPFrames = 0x01000, PktSubSysHeader = 0x02000 }; #endregion #region struct ///
/// 板
卡
信息结构体 ///
public struct DS_BOARD_DETAIL { ///
/// 板
卡
类型 ///
BOARD_TYPE_DS type; ///
/// 序列号 /// BYTE sn[16]; ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] byte[] sn; ///
/// 板
卡
包含的DSP个数 ///
uint dspCount; ///
/// 板
卡
上第一个DSP的索引 ///
uint firstDspIndex; ///
/// 板
卡
包含的编码通道个数 ///
uint encodeChannelCount; ///
/// 板
卡
上第一个编码通道的索引 ///
uint firstEncodeChannelIndex; ///
/// 板
卡
包含的解码通道个数 ///
uint decodeChannelCount; ///
/// 板
卡
上第一个解码通道的索引 ///
uint firstDecodeChannelIndex; ///
/// 板
卡
包含的
视频
输出通道个数 ///
uint displayChannelCount; ///
/// 板
卡
上第一个
视频
输出通道的索引 ///
uint firstDisplayChannelIndex; uint reserved1; uint reserved2; uint reserved3; ///
/// 硬件版本,format:major.minor.build,major:bit 16-19,minor: bit 8-15,build: bit 0-7 ///
uint version; } ///
/// DSP信息结构体 ///
public struct DSP_DETAIL { ///
/// 此DSP所包含的编码通道个数 ///
uint encodeChannelCount; ///
/// 此DSP上第一个编码通道在所有编码通道
中
的索引 ///
uint firstEncodeChannelIndex; ///
/// 此DSP所包含的解码通道个数 ///
uint decodeChannelCount; ///
/// 此DSP上第一个解码通道在所有解码通道
中
的索引 ///
uint firstDecodeChannelIndex; ///
/// 此DSP包含的显示通道个数 ///
uint displayChannelCount; ///
/// 此DSP上第一个显示通道在所有显示通道
中
的索引 ///
uint firstDisplayChannelIndex; uint reserved1; uint reserved2; uint reserved3; uint reserved4; } ///
/// 特殊功能结构体 ///
public struct CHANNEL_CAPABILITY { ///
/// 音频预览 ///
byte[] bAudioPreview; ///
/// 报警信号 ///
byte[] bAlarmIO; ///
/// 看家狗 ///
byte[] bWatchDog; } ///
/// 版本信息 ///
public struct PVERSION_INFO { ///
/// DSP版本号,DSP的BUILD号,用于软件升级时标明该版本的最后修改时间 ///
UInt64 DspVersion, DspBuildNum; ///
/// Driver版本号,Driver的BUILD号,用于软件升级时标明该版本的最后修改时间 ///
UInt64 DriverVersion, DriverBuildNum; ///
/// SDK版本号,SDK的BUILD号,用于软件升级时标明该版本的最后修改时间 ///
UInt64 SDKVersion, SDKBuildNum; } ///
/// 显示窗口内的矩形区域 ///
//[StructLayout(LayoutKind. //public struct RECT //{ // public Int32 left; // public Int32 top; // public Int32 right; // public Int32 bottom; //} ///
/// 帧统计信息结构体 ///
public struct PFRAMES_STATISTICS { ///
///
视频
帧 ///
UInt64 VideoFrames; ///
/// 音频帧 ///
UInt64 AudioFrames; ///
/// 丢失帧 ///
UInt64 FramesLost; ///
/// 丢失的码流(字节) ///
UInt64 QueueOverflow; ///
/// 当前的帧率(bps) ///
UInt64 CurBps; } ///
/// 版本信息结构体 ///
public struct PHW_VERSION { ///
/// DSP
程序
的版本号和Build号 ///
UInt64 DspVersion, DspBuildNum; ///
/// 驱动
程序
的版本号和Build号 ///
UInt64 DriverVersion, DriverBuildNum; ///
/// SDK 的版本号和Build号 ///
UInt64 SDKVersion, SDKBuildNum; } ///
/// 系统时间 ///
public struct SYSTEMTIME { ushort wYear; ushort wMonth; ushort wDayOfWeek; ushort wDay; ushort wHour; ushort wMinute; ushort wSecond; ushort wMilliseconds; } #endregion #region delegate ///
/// 原始图像流设置 /// /// typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context); ///
///
通道号 ///
设备上下文 public delegate void IMAGE_STREAM_CALLBACK(uint channelNumber, IntPtr context); ///
/// 编码数据流
直接
读取回调函数 /// /// typedef int (*STREAM_DIRECT_READ_CALLBACK)(UInt64 channelNumber,void *DataBuf,DWORD Length,int FrameType,void *context); ///
///
通道号 ///
缓冲区地址 ///
缓冲区长度 ///
缓冲区数据帧类型 ///
设备上下文 ///
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] //public delegate int STREAM_DIRECT_READ_CALLBACK(uint channelNumber, byte[] DataBuf, uint Length, FrameType_t FrameType, IntPtr context); public delegate int STREAM_DIRECT_READ_CALLBACK(int channelNumber, IntPtr DataBuf, int Length, FrameType_t FrameType, IntPtr context); //public unsafe delegate int STREAM_DIRECT_READ_CALLBACK(uint channelNumber, void * DataBuf, uint Length, int FrameType, IntPtr context); ///
///
直接
读取码流回调函数 /// /// typedef int (*STREAM_READ_CALLBACK)(UInt64 channelNumber, void *context) ///
///
通道号 ///
设备上下文 ///
public delegate int STREAM_READ_CALLBACK(UInt64 channelNumber, IntPtr context); ///
/// 移动侦测结果回调函数 /// /// typedef void (*MOTION_DETECTION_CALLBACK)(UInt64 channelNumber, BOOL bMotionDetected,void *context) ///
///
通道号 ///
/// 移动侦测发生标志,如果当前通道所设置的移动侦测 /// 区域内产生了移动侦测,则被置为True;如果当前通道所设置的移动侦测区域内自上 /// 一次产生移动侦测后delay秒内没有发生移动侦测,则被置为False。 /// ///
设备上下文 public delegate void MOTION_DETECTION_CALLBACK(UInt64 channelNumber, bool bMotionDetected, IntPtr context); ///
/// 画图回调函数 /// /// #define DRAWFUN(x) void (CALLBACK* x)(Int32 nPort,HDC hDc,Int32 nUser) ///
///
通道号 ///
offscreen表面设备上下文,相当于显示窗口
中
的DC ///
用户数据 public delegate void DrawFun(Int32 nPort, IntPtr HDC, Int32 nUser); ///
/// 解码回调函数 /// /// typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber, void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime, SYSTEMTIME *pFrameAbsoluteTime,void *context) ///
///
解码通道句柄 ///
缓冲区地址 ///
图像宽度 ///
图像高度 ///
捕获
的当前帧的序号 ///
捕获
的当前帧的相对时间,单位:毫秒 ///
捕获
的当前帧的绝对时间 ///
设备上下文 public delegate void DECODER_VIDEO_CAPTURE_CALLBACK(uint nChannelNumber, IntPtr DataBuf, uint width, uint height, uint nFrameNum, uint nFrameTime, SYSTEMTIME pFrameAbsoluteTime, IntPtr context); ///
/// 创建索引完成回调函数 /// /// typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize) ///
///
通道号 ///
索引大小(暂时无效,以后可以增加索引导出、导入功能) public delegate void FILE_REF_DONE_CALLBACK(uint nChannel, uint nSize); #endregion ///
/// DS40xxSDK.dll ///
public class HikVisionSDK { ///
/// 状态 ///
public static readonly List
state = new List
(new string[]{ "", "正在打开", "音频信号丢失", "
视频
信号丢失", "有物体移动", //0-4 "自动分割录像", "开始录像", "停止录像", "启动声音监听", "停止声音监听", //5-9 "启动
视频
预览", "停止
视频
预览", "启动录像", "停止录像", "启动
视频
报警", //10-14 "关闭
视频
报警", "启动音频报警", "停止音频报警", "启动移动侦测", "停止移动侦测", //15-19 "启动
视频
遮挡", "关闭
视频
遮挡", "开始屏幕输出", "停止屏幕输出", "启动
视频
LOGO", //20-24 "停止
视频
LOGO", "开始
视频
OSD", "停止
视频
OSD", "切换为黑白
视频
", "切换为彩色
视频
", //25-29 "切换为黑屏显示", "切换为白屏显示", "
视频
色彩复位", "启动全屏显示", "采集
卡
已经加载", //30-34 "采集
卡
已经卸截", "
视频
服务启动成功", "
视频
服务已停止", "静音", "音量恢复", //35-39 "云台
控制
命令发送", "系统出现未知错误", "录像文件大小", "配置端口号成功", "连接服务端成功", //40-44 "正在连接", "开始接收图象", "异常退出", "接收完毕,退出", "无法联系服务端", //45-49 "服务端拒绝访问", "无效", "停止客户端连接", "图像抓取成功", "初始化服务端网络连接成功", //50-54 "
视频
服务启动失败", "退出全屏预览", "", "", "" //55-59 }); //可以用新版函数替代功能或者无效的API //GetTotalChannels:可用GetEncodeChannelCount替代 //GetTotalDSPs:可用GetDspCount 替代 //SetupDateTime:4.0版本起无效 //HW_GetChannelNum:无效,请使用GetBoardDetail //HW_GetDeviceSerialNo:无效,请使用GetBoardDetail //HW_SetVideoOutStandard:无效,请使用SetDisplayStandard或SetDefaultVideoStandard //HW_SetDspDeadlockMsg:无效 //HW_ResetDsp:无效 //HW_SetDisplayPara:DISPLAY_PARA结构
中
bToVideoOut无效,MD
卡
模拟
视频
输出功能 //已经整合到
视频
矩阵之
中
。 #region 流类型宏定义 ///
///
视频
流 /// #define STREAM_TYPE_VIDEO ///
private const int STREAM_TYPE_VIDEO = 1; ///
/// 音频流 /// #define STREAM_TYPE_AUDIO ///
private const int STREAM_TYPE_AUDIO = 2; ///
/// 音
视频
复合流 /// #define STREAM_TYPE_AVSYNC ///
private const int STREAM_TYPE_AVSYNC = 3; #endregion #region 1.板
卡
初始化及卸载 ///
/// 1.1初始化DSP InitDSPs /// 说 明: 初始化系统
中
每一块板
卡
,应在应用软件
程序
启动时完成。如果返回值为0则表 /// 明初始化失败,可能没有找到相应的DSP软件模块。 /// /// int __stdcall InitDSPs() ///
///
系统内可用的编码通道个数。
[DllImport("DS40xxSDK.dll")] public static extern int InitDSPs(); ///
/// 1.2卸载DSP DeInitDSPs /// 说 明: 关闭每一块板
卡
上的功能,应在应用软件
程序
退出时调用。 /// /// int __stdcall DeInitDSPs() ///
///
0
[DllImport("DS40xxSDK.dll")] public static extern int DeInitDSPs(); #endregion #region 2.板
卡
信息获取 ///
/// 2.1获取系统
中
板
卡
的张数GetBoardCount /// 说 明: 获取系统
中
所有板
卡
的张数,包含编码
卡
和解码
卡
。 /// /// unsigned int __stdcall GetBoardCount() ///
///
系统
中
板
卡
的总张数。
[DllImport("DS40xxSDK.dll")] public static extern uint GetBoardCount(); ///
/// 2.2获取系统
中
DSP的个数GetDspCount /// 说 明: 获取系统
中
所有板
卡
的DSP的个数。 /// /// unsigned int __stdcall GetDspCount() ///
///
系统
中
DSP的总个数
[DllImport("DS40xxSDK.dll")] public static extern uint GetDspCount(); ///
/// GetTotalDSPs:可用GetDspCount 替代 /// 获得实际可用DSP ///
///
[DllImport("DS40xxSDK.dll")] public static extern int GetTotalDSPs(); ///
/// 2.3获取系统
中
编码通道的个数GetEncodeChannelCount /// 说 明: 获取系统
中
所有编码
卡
的编码通道总个数,包含H系列和HC系列编码
卡
。 /// /// unsigned int __stdcall GetEncodeChannelCount() ///
///
系统
中
编码通道的个数
[DllImport("DS40xxSDK.dll")] public static extern uint GetEncodeChannelCount(); ///
/// 2.4获取系统
中
解码通道的个数GetDecodeChannelCount /// 说 明: 获取系统
中
MD
卡
的解码通道个数 /// /// unsigned int __stdcall GetDecodeChannelCount() ///
///
[DllImport("DS40xxSDK.dll")] public static extern uint GetDecodeChannelCount(); ///
/// 2.5获取系统
中
解码显示通道的个数GetDisplayChannelCount /// 说 明: 获取系统
中
MD
卡
显示通道的个数,即模拟
视频
输出通道的个数 /// /// unsigned int __stdcall GetDisplayChannelCount() ///
///
系统
中
显示通道的个数
[DllImport("DS40xxSDK.dll")] public static extern uint GetDisplayChannelCount(); ///
/// 2.6获取板
卡
详细信息GetBoardDetail /// 说 明: 获取某张板
卡
的详细信息 /// /// int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail) ///
///
板
卡
索引 ///
板
卡
信息 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetBoardDetail(uint boardNum, ref DS_BOARD_DETAIL pBoardDetail); ///
/// 2.7获取DSP详细信息GetDspDetail /// 说 明: 获取某个DSP的详细信息 /// /// int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail) ///
///
DSP索引 ///
DSP信息 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetDspDetail(uint dspNum, ref DSP_DETAIL pDspDetail); ///
/// 2.8获取板
卡
型号及序列号信息GetBoardInfo /// 说 明: 获取板
卡
的型号及序列号信息 /// /// int __stdcall GetBoardInfo(HANDLE hChannelHandle, UInt64 *BoardType, UCHAR *SerialNo) ///
///
通道句柄 ///
板
卡
型号 ///
/// 板
卡
ID号, 内容为板
卡
序列号的ASCII的数值,次序为SerialNo[0] 对应最高位, /// SerialNo[11]对应最低位。比如
卡
号为“40000002345”的值对应为 4,0,0,0,0,1,0,0,2,3,4,5 的整形数组。 /// ///
成功为0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetBoardInfo(IntPtr hChannelHandle, UInt64 BoardType, byte[] SerialNo); ///
/// 2.9获取板
卡
特殊功能信息GetCapability /// 说 明: 获取板
卡
特殊功能信息 /// /// int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability) ///
///
通道句柄 ///
特殊功能 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetCapability(IntPtr hChannelHandle, CHANNEL_CAPABILITY Capability); ///
/// 2.10获取板
卡
SDK信息GetSDKVersion /// 说 明: 获取当前所使用的DSP、Driver、SDK版本号 /// /// int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo) ///
///
版本信息 ///
成功返回0;失败返回错误号。
[DllImport("DS40xxSDK.dll")] public static extern int GetSDKVersion(ref PVERSION_INFO VersionInfo); ///
/// 2.11获取板
卡
SDK及DSP错误报告GetLastErrorNum*,此函数只对H
卡
有效 /// 说 明: 获取SDK及DSP错误报告。此函数只对H
卡
有效,用于HC
卡
上返回0且无效 /// /// int __stdcall GetLastErrorNum(HANDLE hChannelHandle, UInt64 *DspError, UInt64 *SdkError) ///
///
通道句柄 ///
DSP错误 ///
SDK错误 ///
DSP错误信息、SDK错误信息
[DllImport("DS40xxSDK.dll")] public static extern int GetLastErrorNum(IntPtr hChannelHandle, ref int DspError, ref int SdkError); #endregion #region 3.编码
卡
API #region 3.1通道打开及关闭 ///
/// 3.1.1打开通道ChannelOpen /// 说 明: 打开通道,获取编码通道的操作句柄,与通道相关的操作需使用相对应的句柄。 /// /// HANDLE __stdcall ChannelOpen(int ChannelNum) ///
///
通道号(从0开始) ///
成功返回有效句柄(值可能为0);失败返回0xFFFFFFFF。
[DllImport("DS40xxSDK.dll")] public static extern IntPtr ChannelOpen(int ChannelNum); ///
/// 3.1.2关闭通道ChannelClose /// 说 明: 关闭通道,释放相关资源 /// /// int __stdcall ChannelClose(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int ChannelClose(IntPtr hChannelHandle); #endregion #region 3.2
视频
预览 #region 3.2.1 Overlay预览模式 // 释 义: overlay预览模式 //Overlay通常被称为重叠页面或者是覆盖层,是一种需要特定的硬件支持的页面,通常 //被用于显示实时
视频
于主页面之上,而不需要Blit操作到主页面或用任何方法改变主页面的 //内容。使用该方式进行预览可以提高预览的画质和降低CPU利用率。 ///
/// 3.2.1.1设置
视频
预览模式SetPreviewOverlayMode /// 说 明: SDK自3.2版本起在部分显
卡
中
实现了HC
卡
以overlay方式预览的功能(此功 /// 能不支持与H
卡
混插的状态下),可以提高预览的画质和降低CPU利用率。当预览画面小 /// 于704*576时,需要调用该函数来启动overlay模式,如不设置则自动切换到offscreen模式 /// 进行预览显示,当预览画面大于704*576时,SDK自动切换到overlay模式 /// /// int __stdcall SetPreviewOverlayMode(BOOL bTrue) ///
///
是否设置overlay预览方式,也适用于MD
卡
///
0表示显
卡
支持板
卡
的overlay预览方式;其他值表示显
卡
不支持
[DllImport("DS40xxSDK.dll")] public static extern int SetPreviewOverlayMode(bool bTrue); ///
/// 3.2.1.2设置overlay关键色SetOverlayColorKey /// 注意:需要在StartVideoPreview前调用该函数。 /// 说 明: 板
卡
在显示范围小于704*576时,调用SetPreviewOverlayMode可以开启overlay /// 预览模式,需调用SetOverlayColorKey设置overlay关键色;当显示范围大于704*576时, /// 板
卡
自动切换到overlay预览模式,关键色默认设置为RGB(10,10,10),也可调用 /// SetOverlayColorKey修改关键色。在这两种情况下,都需要将显示窗口的底色设置为和关键 /// 色相一致。否则图像将难以显示。 /// /// /// int __stdcall SetOverlayColorKey(COLORREF DestColorKey) ///
///
overlay关键色参数(RGB(*,*,*)) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetOverlayColorKey(int DestColorKey); //public static extern int SetOverlayColorKey(Color DestColorKey); ///
/// 3.2.1.3恢复当前丢失的表面RestoreOverlay /// 说 明: 恢复当前丢失的表面,例如:当系统按下CTRL+ALT+DEL时系统的OVERLAY /// 表面会被强制关闭,调用该函数可以恢复OVERLAY表面 /// /// int __stdcall RestoreOverlay() ///
///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int RestoreOverlay(); #endregion #region 3.2.2 开启及停止
视频
预览 ///
/// 3.2.2.1开启
视频
预览StartVideoPreview /// 说 明: 启动
视频
预览,调用SetPreviewOverlayMode后,可进行overlay模式预览,否则, /// 将默认采用offscreen模式预览。当画面大于704*576时,SDK自动切换到overlay预览模式。 /// /// int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle, RECT *rect,BOOLEAN bOverlay, int VideoFormat, int FrameRate) ///
///
通道句柄 ///
显示窗口句柄 ///
/// 显示窗口内的矩形区域 /// Rect.right 必须为8的倍数 /// Rect.bottom必须为16的倍数 /// ///
是否启用Overlay预览模式 ///
视频
预览格式(目前无效) ///
视频
预览帧率(PAL:1-25,NTSC:1-30) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int StartVideoPreview(IntPtr hChannelHandle, IntPtr WndHandle, ref Rectangle rect, bool bOverlay, int VideoFormat, int FrameRate); //public static extern int StartVideoPreview(IntPtr hChannelHandle, IntPtr WndHandle, ref RECT rect, bool bOverlay, int VideoFormat, int FrameRate); ///
/// 3.2.2.2停止
视频
预览StopVideoPreview /// 说 明: 停止
视频
预览 /// /// int __stdcall StopVideoPreview(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int StopVideoPreview(IntPtr hChannelHandle); #endregion #region 3.2.3
视频
参数的设置及获取 ///
/// 3.2.3.1设置
视频
参数SetVideoPara /// 说 明: 设置
视频
参数 /// /// int __stdcall SetVideoPara(HANDLE hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue) ///
///
通道句柄 ///
亮度
值(0-255) ///
对比度
(0-127) ///
饱和度
(0-127) ///
色调
(0-255) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetVideoPara(IntPtr hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue); ///
/// 3.2.3.2获取
视频
参数GetVideoPara /// 说 明: 获取
视频
参数 /// /// int __stdcall GetVideoPara(HANDLE hChannelHandle, VideoStandard_t *VideoStandard, int*Brightness, int *Contrast, int *Saturation, int *Hue) ///
///
通道句柄 ///
视频
制式 ///
亮度
指针值(0-255) ///
对比度
指针值(0-127) ///
饱和度
指针值(0-127) ///
色调
指针值(0-255) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetVideoPara(IntPtr hChannelHandle, VideoStandard_t VideoStandard, out int Brightness, out int Contrast, out int Saturation, out int Hue); #endregion #endregion #region 3.3
视频
信号设置(制式、状况、输入位置等) ///
/// 3.3.1设置
视频
制式SetVideoStandard,此函数只对H
卡
有效 /// 说 明: 设置
视频
制式,在某一制式的摄像头已经接好的情况下启动系统时可不必调用该 /// 函数,如果没有接摄像头的情况下启动系统然后再接NTSC制式的摄像头则必须调用该函 /// 数,或者
中
途调换不同制式的摄像头也必须调用该函数。 /// /// int __stdcall SetVideoStandard(HANDLE hChannelHandle, VideoStandard_t VideoStandard) ///
///
通道句柄 ///
视频
制式 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetVideoStandard(IntPtr hChannelHandle, VideoStandard_t VideoStandard); ///
/// 3.3.2设置系统默认的
视频
制式SetDefaultVideoStandard /// 注意:该函数只能在系统初始化(InitDSPs)之前运行,否则无效 /// 说 明: 设置系统默认的
视频
制式,系统
中
所有的
视频
输入通道如果无
视频
输入或者在系 /// 统启动的时候,通道会按照所设置的系统默认
视频
制式进行处理。 /// /// int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard) ///
///
视频
制式,默认为PAL ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetDefaultVideoStandard(VideoStandard_t VideoStandard); ///
/// 3.3.3设置
视频
信号灵敏度SetVideoDetectPrecision /// 说 明: 设置
视频
信号检测的灵敏度。如果
视频
信号的强度比较弱,或者信号通断的切换 /// 比较频繁,会出现“无
视频
信号”的提示字样,为了避免提示字样影响图像,可以更改
视频
/// 信号检测的灵敏度。灵敏度取值越大,检测精度越低,出现“无
视频
信号”提示字样的频率 /// 越低。当将value值设置为0xffffffff时,将不会再出现“无
视频
信号”的提示字样。 /// /// int __stdcall SetVideoDetectPrecision(HANDLE hChannel,unsigned int value) ///
///
通道句柄 ///
灵敏度。取值范围:0-100,默认为20 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetVideoDetectPrecision(IntPtr hChannel, uint value); ///
/// 3.3.4获取
视频
信号输入情况GetVideoSignal /// 说 明: 获取
视频
信号的输入情况,用于
视频
丢失报警 /// /// int __stdcall GetVideoSignal(HANDLE hChannelHandle) ///
///
通道句柄 ///
信号正常返回0;返回其他值说明信号异常或有错误
[DllImport("DS40xxSDK.dll")] public static extern int GetVideoSignal(IntPtr hChannelHandle); ///
/// 3.3.5调整
视频
信号输入位置SetInputVideoPosition /// 说 明: 设置
视频
信号的输入位置。(x,y)为系统处理图像的左上角在摄像机输入的原 /// 始图像
中
的坐标,某些摄像机输入的图像在预览时可能在左边会有黑边,可以通过此函数进 /// 行调节,x必须设置为2的整数倍。(x,y)的取值和摄像机的型号有关,如果指定的值和 /// 摄像机的输入参数不匹配,可能会导致图像静止、水平垂直方向滚动或者黑屏,请谨慎使用。 /// /// int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y) ///
///
通道句柄 ///
X轴坐标,默认值为8 ///
Y轴坐标,默认值为2 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetInputVideoPosition(IntPtr hChannel, uint x, uint y); ///
/// 3.3.6设置反隔行变换及强度SetDeInterlace /// 说 明: 设置是否采用反隔行算法,已经采用反隔行时的强度 /// /// 释 义: 反隔行变换 /// 如果该通道的图像需要进行4CIF的预览或编码,此时的图像
中
会同时包含奇、偶两 /// 场的数据,由于奇场图像和偶场图像不同步,导致图像
中
运动的部分发生错位、边缘模糊, /// 此时需要对图像进行反隔行变换来去掉这种现象。如果用户能够确定使用的是逐行扫描格式 /// 的摄像机,或者主要应用在静止场景,此时可以关掉反隔行变换功能,或者降低强度,这样 /// 可以提高系统运行效率,并降低反隔行变换对图像质量带来的损失。 /// /// int __stdcall SetDeInterlace(HANDLE hChannelHandle,UINT mode,UINT level) ///
///
通道句柄 ///
/// 0表示该通道不进行反隔行变换,此时level参数无效; /// 1表示使用旧的算法; /// 2表示使用默认算法(系统默认值)。 /// ///
/// mode=1时有效,其它时无效。 /// 0-10,反隔行变换的强度逐渐加强,0最弱,对图像的损失最小,10最强,对图像的损失最大。 /// ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetDeInterlace(IntPtr hChannelHandle, uint mode, uint level); #endregion #region 3.4
视频
编码参数设置 // 释 义: 双编码功能(主、子通道) // 对一路
视频
图像进行两路
视频
编码,两路
视频
可以有不同的码流类型、不同分辨率、不 //同码率等。3.0版本对双编码功能做了增强,子通道的所有参数都可以任意设置。 //双编码
中
主通道和子通道唯一的区别在于:子通道占用的系统资源比主通道少,优先级 //比主通道低。当系统忙时,会尽量保证主通道编码,并先从子通道开始丢帧。由于占用资源 //少,因此可以利用子通道来实现多路高分辨率的非实时编码。例如:可以把DS-4000HC
中
//的每个子通道全部设置为4CIF分辨率(SetSubStreamType),而不使用主通道编码,这样就 //可以实现全部通道的4CIF编码。在一般场景下,每路图像都可以达到15帧以上。 ///
/// 3.4.1主、子通道切换SetupSubChannel /// 说 明: 配合双编码模式使用。当设置某个通道为双编码模式时,如主通道编码CIF,子 /// 通道编码QCIF,这时可对主/子通道分别设置某些参数。关键帧间隔、OSD、LOGO等参数 /// 对主/子通道是一样的;在设置帧率、量化系数、变码流/定码流模式、码流大小等参数时应 /// 调用此函数分别对主/子通道进行设置,缺省是对主通道进行设置 /// /// int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel) ///
///
通道句柄 ///
子通道号(0表示主通道,1表示主通道) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetupSubChannel(IntPtr hChannelHandle, int iSubChannel); ///
/// 3.4.2获取双编码时数据流类型GetSubChannelStreamType /// 说 明: 配合双编码模式使用,当设置双编码模式时,启动录像后,DSP会向上送两种 /// 数据流,调用此函数得到主通道和子通道的数据流类型,供应用
程序
使用。 /// /// int __stdcall GetSubChannelStreamType(void *DataBuf, int FrameType) ///
///
数据缓存区 ///
帧类型 ///
/// 0 其他数据 /// 1 主通道数据流的文件头 /// 2 子通道数据流的文件头 /// 3 主通道数据流的
视频
帧类型 /// 4 子通道数据流的
视频
帧类型 /// 5 数据流的音频帧 ///
[DllImport("DS40xxSDK.dll")] public static extern int GetSubChannelStreamType(IntPtr DataBuf, int FrameType); #region 3.4.3编码流类型的设置及获取(不支持动态修改) ///
/// 3.4.3.1设置主通道编码流类型SetStreamType /// 说 明: 设置主通道编码流类型。此函数需在启动编码前进行设置 /// /// int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type) ///
///
通道句柄 ///
流类型 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetStreamType(IntPtr hChannelHandle, ushort Type); ///
/// 3.4.3.2获取主通道编码流类型GetStreamType /// 说 明: 获取主通道编码流类型 /// /// int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType) ///
///
通道句柄 ///
流类型 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetStreamType(IntPtr hChannelHandle, ref ushort StreamType); ///
/// 3.4.3.3设置子通道编码流类型SetSubStreamType /// 说 明: 设置子通道编码流类型,此函数需在启动编码前进行设置 /// /// int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type) ///
///
通道句柄 ///
流类型 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetSubStreamType(IntPtr hChannelHandle, ref ushort Type); ///
/// 3.4.3.4获取子通道编码流类型GetSubStreamType /// 说 明: 获取子通道编码流类型 /// /// int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType) ///
///
通道句柄 ///
流类型 ///
[DllImport("DS40xxSDK.dll")] public static extern int GetSubStreamType(IntPtr hChannelHandle, ref ushort StreamType); #endregion #region 3.4.4(支持动态修改)的编码参数设置 ///
/// 3.4.4.1设置编码图像质量SetDefaultQuant /// 说 明: 设置图像量化系数,用于调整图像质量。量化系数越小图像质量越高。系统默认量化系数值为18,18,23。 /// 释 义: 量化系数 /// 量化系数是强烈影响MPEG标准
中
编码图像质量和码率的参数,当量化系数越低,图 /// 像质量就会越高,码率也就越高,反之,图形质量就会越低,码率也就越低 /// /// int __stdcall SetDefaultQuant(HANDLE hChannelHandle, int IQuantVal, int PQuantVal, int BQuantVal) ///
///
通道句柄 ///
I帧量化系数,取值范围:12-30 ///
P帧量化系数。取值范围:12-30(目前无效) ///
B帧量化系数。取值范围:12-30(目前无效) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetDefaultQuant(IntPtr hChannelHandle, int IQuantVal, int PQuantVal, int BQuantVal); ///
/// 3.4.4.2设置编码帧结构、帧率SetIBPMode /// 说 明: 设置编码帧结构和帧率。支持动态修改 /// 释 义: 关键帧间隔 /// 关键帧为编码码流
中
采用帧内压缩的图像帧,其特点是图像清晰度好,但数据量大,通 /// 常作为帧间编码的原始参考帧。关键帧间隔是连续的帧间编码的帧个数,因H264(MPEG4) /// 编码是有损压缩,关键帧的个数会影响图像质量,因此关键帧的间隔需要合理设计。 /// /// int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate) ///
///
通道句柄 ///
关键帧间隔。取值范围1-400,系统默认为100 ///
B帧数量,取值为0或者2,系统默认为2 ///
P帧数量。目前暂取值无效 ///
帧率,帧率范围1-25(PAL)、1-30(NTSC) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetIBPMode(IntPtr hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate); #region 3.4.4.3设置编码分辨率 ///
/// 3.4.4.3.1设置主通道分辨率SetEncoderPictureFormat /// 说 明: 设置主通道编码分辨率。支持动态修改。 /// /// int __stdcall SetEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat) ///
///
通道句柄 ///
编码图像分辨率(4CIF、DCIF、2CIF、CIF、QCIF) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetEncoderPictureFormat(IntPtr hChannelHandle, PictureFormat_t PictureFormat); ///
/// 3.4.4.3.2设置子通道编码分辨率SetSubEncoderPictureFormat /// 说 明: 设置双编码模式时子通道的编码分辨率,支持动态修改。 /// /// int __stdcall SetSubEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat) ///
///
子通道句柄 ///
子通道编码图像分辨率(4CIF、DCIF、2CIF、CIF、 QCIF) ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetSubEncoderPictureFormat(IntPtr hChannelHandle, PictureFormat_t PictureFormat); #endregion #region 3.4.4.4设置码率及码流
控制
模式 ///
/// 3.4.4.4.1设置码流最大比特率SetupBitrateControl /// 说 明: 设置编码的最大比特率。设置为0时码流
控制
无效,设置为某一最大比特率时, /// 当编码码流超过该值时,DSP会自动调整编码参数来保证不超过最大比特率,当编码码流 /// 低于最大比特率时,DSP不进行干涉。调整误差<10% /// /// int __stdcall SetupBitrateControl(HANDLE hChannelHandle, UInt64 MaxBps) ///
///
通道句柄 ///
最大比特率。取值:10000以上 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetupBitrateControl(IntPtr hChannelHandle, Int32 MaxBps); ///
/// 3.4.4.4.2设置码流
控制
方式SetBitrateControlMode /// 说 明: 设置编码码流
控制
方式。配合SetupBitrateControl使用。当设置为变码率(brVBR) /// 时,最大比特率将作为编码码流上限,由DSP在码流上限下自动
控制
码率,一般会自动回 /// 落到最低的状态(由设定的图像质量参数和关键帧间隔决定),能最大程度地降低带宽和存 /// 储空间,但存储容量一般难以估算;当设置为定码率(brCBR)时,以最大比特率作为编码 /// 码率参数恒定输出码流,不会自动回落到低码流状态,存储容量可根据设定码率的大小进行估算。 /// /// int __stdcall SetBitrateControlMode(HANDLE hChannelHandle, BitrateControlType_t brc) ///
///
通道句柄 ///
码流
控制
方式,分为变码率(brVBR)和恒定码率 (brCBR)两种方式 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetBitrateControlMode(IntPtr hChannelHandle, BitrateControlType_t brc); #endregion ///
/// 3.4.5强制设定I帧CaptureIFrame /// 说 明: 将当前编码帧强制设定为I帧模式,可从码流
中
提取该帧单独用于网络传送。 /// /// int __stdcall CaptureIFrame(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int CaptureIFrame(IntPtr hChannelHandle); ///
/// 3.4.6获取帧统计信息GetFramesStatistics /// 说 明: 获取帧统计信息 /// /// int __stdcall GetFramesStatistics(HANDLE hChannelHandle,PFRAMES_STATISTICS framesStatistics) ///
///
通道句柄 ///
帧统计信息 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetFramesStatistics(IntPtr hChannelHandle, PFRAMES_STATISTICS framesStatistics); #endregion #endregion #region 3.5数据
捕获
#region 3.5.1抓图(获取单帧图像数据) #region 3.5.1.1抓取BMP格式图像 ///
/// 3.5.1.1.1获取原始yuv422格式数据GetOriginalImage /// 说 明: 获得原始yuv422格式图像,DS4000HC原始图像是4CIF图像格式(包括QCIF编码), /// DS-4000HS原始图像为CIF图像格式,DS400xH
卡
的原始图象是CIF图象格式。 /// /// int __stdcall GetOriginalImage(HANDLE hChannelHandle, UCHAR *ImageBuf, UInt64 *Size) ///
///
通道句柄 ///
原始yuv422格式图像指针 ///
原始yuv422格式图像尺寸,函数调用前是ImageBuf的大小,调用后是实际图像所占用的字节数 ///
成功返回0,失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int GetOriginalImage(IntPtr hChannelHandle, byte[] ImageBuf, out int Size); ///
/// 3.5.1.1.2图像格式转换YUVtoBMP SaveYUVToBmpFile /// 说 明: 用户
程序
可调用此函数来生成24位的bmp文件,如果是DS4000HC
卡
抓图则 /// Width 为704,Height 为576PAL/480NTSC,如果是DS400xH
卡
抓图则Width可能为352 /// 或176,Height为288、240、144或120,要根据缓冲区的大小来判断。 /// /// int __stdcall SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height) ///
///
文件名 ///
yuv422格式图像指针 ///
图像宽度 ///
图像高度 ///
[DllImport("DS40xxSDK.dll")] public static extern int SaveYUVToBmpFile(string FileName, byte[] yuv, int Width, int Height); ///
/// 3.5.1.2抓取JPEG格式图像GetJpegImage /// 说 明: 抓取JPEG格式图像 /// /// int __stdcall GetJpegImage(HANDLE hChannelHandle,UCHAR *ImageBuf, UInt64 *Size,UINT nQuality) ///
///
通道句柄 ///
JPEG图像指针 ///
JPEG图像尺寸,函数调用前是ImageBuf的大小,调用后是实际图像所占用的字节数 ///
JPEG图像质量,取值范围1-100,取值100时质量最好 ///
[DllImport("DS40xxSDK.dll")] public static extern int GetJpegImage(IntPtr hChannelHandle, byte[] ImageBuf, out int Size, uint nQuality); #endregion #region 3.5.2原始图像数据流
捕获
(获取YUV420格式数据流) ///
/// 3.5.2.1注册原始图像数据流回调函数RegisterImageStreamCallback /// 说 明: 注册获取原始图像数据流函数,用户可以获取实时的YUV420格式的预览数据 /// /// int __stdcall RegisterImageStreamCallback (IMAGE_STREAM_CALLBACK ImageStreamCallback,void *context) ///
///
原始图像数据流回调函数 ///
设备上下文 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int RegisterImageStreamCallback(IMAGE_STREAM_CALLBACK ImageStreamCallback, IntPtr context); ///
/// 3.5.2.2开启及停止原始数据流
捕获
SetImageStream /// 说明: 开启或停止原始图像数据流
捕获
,此函数依赖主机的处理速度。DS-4000HS只能
捕获
不大于CIF格式的数据流 /// /// 函 数: int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps, UINT width,UINT height,unsigned char *imageBuffer) ///
///
通道句柄 ///
是否启动
捕获
///
帧率 ///
图像宽度,必须是4CIF宽度的1/8,1/4,1/2或原始大小704 ///
图象高度,必须是4CIF高度的1/8,1/4,1/2或原始大小576PAL/480NTSC ///
数据存储缓存 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetImageStream(IntPtr hChannel, bool bStart, uint fps, uint width, uint height, char[] imageBuffer); #endregion #region 3.5.3编码数据流
捕获
(获取编码后H.264格式数据流)即录像 //注意:注册
直接
回调或者消息回调后,需要启动编码数据流
捕获
函数才能进行数据回调。三 //种数据回调方式,只需选取其
中
一种使用即可。对于HC系列板
卡
(包括HC、HC+、HCS、 //HS),推荐使用第一种读取方式。对于H系列板
卡
,只能使用后两种读取方式。 #region 3.5.3.1编码数据流
捕获
方式设置 ///
/// 3.5.3.1.1.1注册编码图像数据流
直接
读取回调函数 /// 说 明: DS4000HC系列板
卡
新增的一种数据流读取方式,当启动数据
捕获
后, /// StreamDirectReadCallback会提供数据流的地址、长度、帧类型等,供用户
程序
直接
处理。 /// /// 函 数: int __stdcall RegisterStreamDirectReadCallback (STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context) ///
///
编码数据流
直接
读取回调函数 ///
设备上下文 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int RegisterStreamDirectReadCallback(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback, IntPtr context); #endregion #region 3.5.3.1.2方式二、消息读取方式 ///
/// 3.5.3.1.2.1设置消息读取伐值,此函数只对H
卡
有效 /// 说 明: 设置消息读取的伐值,可以将缓冲区的数据在OnDataReady
中
一次性取走 /// /// int __stdcall SetupNotifyThreshold(HANDLE hChannelHandle, int iFramesThreshold) ///
///
通道句柄 ///
读取消息伐值,范围1-10 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int SetupNotifyThreshold(IntPtr hChannelHandle, int iFramesThreshold); ///
/// 3.5.3.1.2.2注册消息读取码流函数 /// 说 明: 当数据准备好时,SDK会向hWnd窗口发送MessageId消息,目标窗口收到 /// Message后调用ReadStreamData读取一帧数据。如果HC
卡
与H
卡
混插,可以先调用 /// RegisterStreamDirectReadCallback函数来注册HC
卡
取码流回调函数,再调用 /// RegisterMessageNotifyHandle函数来注册H
卡
取码流消息函数。 /// HC系列板
卡
建议使用方式一进行数据
捕获
。 /// /// int __stdcall RegisterMessageNotifyHandle(HWND hWnd, UINT MessageId) ///
///
通道句柄 ///
自定义消息 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int RegisterMessageNotifyHandle(IntPtr hWnd, uint MessageId); #endregion #region 3.5.3.1.3方式三、另一种
直接
读取方式 ///
/// 3.5.3.1.3.1注册
直接
读取码流回调函数 /// 说 明: 另一种数据流读取方式 /// /// int __stdcall RegisterStreamReadCallback (STREAM_READ_CALLBACK StreamReadCallback, void *Context) ///
///
直接
读取码流回调函数 ///
设备上下文 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int RegisterStreamReadCallback(STREAM_READ_CALLBACK StreamReadCallback, IntPtr Context); #endregion ///
/// 3.5.3.2读取码流函数 /// 说 明: 读指定长度的数据流,适用于方式二及方式三。当调用StartVideoCapture 或 /// StartMotionDetection后,SDK线程会向已注册的用户窗口消息处理函数发送指定的消息, /// 并提供消息来源的通道号。当用户
程序
收到该消息时,可调用本函数来读取数据,Length 在 /// 作为输入时必须提供缓冲的大小,ReadStreamData会判断缓冲是否足够,如果缓冲足够大 /// 则返回值为当前的读取的帧长度,否则返回错误。 /// 在HC
卡
中
,如果已经先调用了RegisterStreamDirectReadCallback()函数,则不需调用 /// ReadStreamData来读取数据,因为音
视频
数据会在RegisterStreamDirectReadCallback所注册 /// 的回调函数
中
直接
返回。 /// /// int __stdcall ReadStreamData(HANDLE hChannelHandle, void *DataBuf, DWORD *Length, int *FrameType) ///
///
通道句柄 ///
自定义的数据缓存区 ///
输入:缓存区的大小;输出:一帧数据的大小 ///
帧类型 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int ReadStreamData(IntPtr hChannelHandle, byte[] DataBuf, out UInt64 Length, out int FrameType); #region 3.5.3.3开启及停止录像 ///
/// 3.5.3.3.1启动主通道编码数据流
捕获
/// 说 明: 启动主通道编码数据流
捕获
。用户
程序
可以使用
直接
读取方式,使用 /// StreamDirectReadCallback回调函数
直接
对数据流进行处理;也可以与H
卡
一样,通过消息 /// 读取方式,等SDK向用户
程序
发送在RegisterMessageNotifyHandle
中
注册的消息,用户程 /// 序使用ReadStreamData来读取数据流。 /// /// int __stdcall StartVideoCapture(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int StartVideoCapture(IntPtr hChannelHandle); ///
/// 3.5.3.3.2停止主通道编码数据流
捕获
/// 说 明: 停止主通道编码数据流
捕获
/// /// int __stdcall StopVideoCapture(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int StopVideoCapture(IntPtr hChannelHandle); ///
/// 3.5.3.3.3启动子通道编码数据流
捕获
/// 说 明: 启动子通道编码数据流
捕获
/// /// int __stdcall StartSubVideoCapture(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int StartSubVideoCapture(IntPtr hChannelHandle); ///
/// 3.5.3.3.4停止子通道编码数据流
捕获
/// 说 明: 停止子通道编码数据流
捕获
/// /// int __stdcall StopSubVideoCapture(HANDLE hChannelHandle) ///
///
通道句柄 ///
成功返回0;失败返回错误号
[DllImport("DS40xxSDK.dll")] public static extern int StopSubVideoCapture(IntPtr hChannelHandle); #endregion #endregion #endregion #endregion #region 3.6移动侦测 // 释 义: 移动侦测 //DS4000HC提供运动强度信息来处理运动检测,设置移动侦测区域时以32*32像素块为 //单位,按4CIF(704*576)分辨率计算,每行有22个块(704/32),PAL时18行(576/32), //NTSC时15行(480/32),与编码格式无关。经过测试,这种方法比H
卡
提高了灵敏度和可 //靠性,并简化了返回的数据,返回的值是18个DWORD,对应屏幕高度576/32=18行(PAL), //每个DWORD的0-21位对应屏幕宽度704/32=22, 其
中
1为运动,0为静止,也可以调用原有 //MotionAnalyzer分析结果 //4.0版本的SDK新增了接口函数SetupMotionDetectionEx,
Photo Editor-crx插件
语言:English (United States) 照片编辑器浏览器扩展 照片编辑器是一个小型但功能强大的照片编辑应用
程序
。 如果您有摄影方面的知识,则可以使用“照片编辑器”做很多事情。 现在,就像使用PC一样,使用“照片编辑器”在手机上编辑照片。 特点*颜色:曝光度,
亮度
,
对比度
,
饱和度
,温度,色彩和色相*曲线和色阶:颜色的微调*效果:伽玛校正,自动
对比度
,自动
色调
,鲜明度,模糊,锐化,油漆,素描,黑白高
对比度
,棕褐色等*添加文本,图像或形状*帧,去噪,绘图,像素,克隆,切出*旋转,拉直,裁切,调整大小*校正:透视,镜头,红眼,白色平衡和背光*使用触摸和缩小缩放界面轻松进行编辑*以JPEG,PNG,GIF,WebP和PDF格式保存图像*查看,编辑或删除元数据(EXIF,IPTC,XMP)*将最终结果保存到您的图库,墙纸或SD
卡
*与电子邮件,SNS等共享照片*批处理,裁剪(拼图),压缩为ZIP,创建PDF,GIF动画*网页
捕获
,
视频
捕获
,PDF
捕获
(棒棒糖+ )*提供无广告选项(“设置”>“购买商品”)
游戏开发
8,303
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章