C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结

简介:

正文

     1.     IntPtr转换成byte[]

         public   byte [] ConvertToBytes(IntPtr dataBuf,  int  length)
        {
            
byte [] byteBuf  =   new   byte [length];
            Marshal.Copy(dataBuf, byteBuf, 
0 , length);
            
return  byteBuf;
        }

     2.     读写INI文件

          一般用于读写配置文件

     ///   <summary>
    
///  读写INI文件
    
///   </summary>
     public   class  IniFile
    {
        
///   <summary>
        
///  文件INI名称
        
///   </summary>
         public   string  Path;

        
///   <summary>
        
///  声明读写INI文件的API函数 
        
///   </summary>
        
///   <param name="section"></param>
        
///   <param name="key"></param>
        
///   <param name="val"></param>
        
///   <param name="filePath"></param>
        
///   <returns></returns>
        [DllImport( " kernel32 " )]
        
private   static   extern   long  WritePrivateProfileString( string  section,  string  key,  string  val,  string  filePath);


        [DllImport(
" kernel32 " )]
        
private   static   extern   int  GetPrivateProfileString( string  section,  string  key,  string  def, StringBuilder retVal,  int  size,  string  filePath);

        
///   <summary>
        
///  类的构造函数,传递INI文件名
        
///   </summary>
        
///   <param name="inipath"></param>
         public  IniFile( string  inipath)
        {
            
//
            
//  TODO: Add constructor logic here
            
//
            Path  =  inipath;
        }

        
///   <summary>
        
///  写INI文件
        
///   </summary>
        
///   <param name="Section"></param>
        
///   <param name="Key"></param>
        
///   <param name="Value"></param>
         public   void  IniWriteValue( string  Section,  string  Key,  string  Value)
        {
            WritePrivateProfileString(Section, Key, Value, 
this .Path);

        }

        
///   <summary>
        
///  读取INI文件指定
        
///   </summary>
        
///   <param name="Section"></param>
        
///   <param name="Key"></param>
        
///   <returns></returns>
         public   string  IniReadValue( string  Section,  string  Key)
        {
            StringBuilder temp 
=   new  StringBuilder( 5000 );
            
int  i  =  GetPrivateProfileString(Section, Key,  "" , temp,  5000 this .Path);
            
return  temp.ToString();

        }
    }

     3.     获取网卡号

          可用于软件加密

         ///   <summary>
        
///  获得网卡号
        
///   </summary>
        
///   <returns></returns>
         public   static   string  GetNetCardMacAddress()
        {
            ManagementClass mc 
=   new  ManagementClass( " Win32_NetworkAdapterConfiguration " );
            ManagementObjectCollection moc 
=  mc.GetInstances();
            
string  str  =   "" ;
            
foreach  (ManagementObject mo  in  moc)
            {
                
if  (( bool )mo[ " IPEnabled " ==   true )
                    str 
=  mo[ " MacAddress " ].ToString();
            }
            
return  str;
        }

     4.     获取采集卡序列化

          可用于软件加密绑定,注意结构体DS_BOARD_DETAIL.sn是16位的,但是实际只有12位,VC++源码也只取了12位,后门都是0。

         ///   <summary>
        
///  获取板卡序号
        
///   </summary>
        
///   <returns></returns>
         public   static   string  GetBoardSN()
        {
            
uint  boardCount  =  HikVisionSDK.GetBoardCount();
            StringBuilder sn 
=   new  StringBuilder();
            
for  ( uint  i  =   0 ; i  <  boardCount; )
            {
                DS_BOARD_DETAIL boardDetail 
=   new  DS_BOARD_DETAIL();
                HikVisionSDK.GetBoardDetail(i, 
ref  boardDetail);
                
for  ( int  j  =   0 ; j  <   12 ; j ++ )
                {
                    sn.Append((
char )(boardDetail.sn[j]  +   0x30 ));
                }
                
break ;
            }
            
return  sn.ToString();
        }

     5.     全屏显示视频窗口

        ///   <summary>
        
///  全屏
        
///   </summary>
        
///   <param name="tsmFullScreen"> 右键 </param>
        
///   <param name="pVideo"> 显示视频的窗口 </param>
        
///   <param name="cs"> 视频连接成功返回的值 </param>
         private   void  FullScreen(ToolStripMenuItem tsmFullScreen, Panel pVideo,  int  cs)
        {
            
if  ( this .WindowState  ==  System.Windows.Forms.FormWindowState.Maximized)
            {
                tsmFullScreen.Text 
=   " 全屏窗口 " ;
                
this .FormBorderStyle  =  System.Windows.Forms.FormBorderStyle.FixedSingle;
                
this .WindowState  =  System.Windows.Forms.FormWindowState.Normal;
                
this .TopMost  =   false ;
                pVideo.Width 
=  pre_Width;
                pVideo.Height 
=  pre_Height;
                pVideo.Top 
=  pre_Top;
                pVideo.Left 
=  pre_Left;

                
// 隐藏其他控件
                HideOtherControls(pVideo,  true );

                minPanel(pVideo, cs);
            }
            
else
            {
                tsmFullScreen.Text 
=   " 关闭全屏 " ;
                
this .FormBorderStyle  =  System.Windows.Forms.FormBorderStyle.None;
                
this .WindowState  =  System.Windows.Forms.FormWindowState.Maximized;
                
this .TopMost  =   true ;

                pre_Width 
=  pVideo.Width;
                pre_Height 
=  pVideo.Height;
                pre_Top 
=  pVideo.Top;
                pre_Left 
=  pVideo.Left;

                pVideo.Width 
=   this .Width;
                pVideo.Height 
=   this .Height;
                pVideo.Top 
=   0 ;
                pVideo.Left 
=   0 ;

                
// 显示其他控件
                HideOtherControls(pVideo,  false );
            }
        }

     6.     其他代码

         // 判断是不是IP地址
         public   bool  IsIPAddress( string  ip)
        {
            
return  Regex.IsMatch(ip,  @" ^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$ " );
        }
        
///   <summary>
        
///  是否是无符号整数(正数)
        
///   </summary>
        
///   <param name="value"></param>
        
///   <returns></returns>
         public   bool  IsUInt( string  value)
        {
            
return  Regex.IsMatch(value,  @" ^\d*$ " );
        }

 

结束

     实际开发中远不只这么多,基本上也是有一个这样的功能需求就去GOOGLE一段代码出来,还有其他如delegate和event在窗体之间使用,分屏也是简单的采用了4个Panel,当放大时就分别隐藏其他Panel等等,就不一一列举了,多查查资料就行了: )     



本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586627,如需转载请自行联系原作者

相关文章
|
4月前
|
机器学习/深度学习 人工智能 Kubernetes
开源AI驱动的商业综合体保洁管理——智能视频分析系统的技术解析
智能保洁管理系统通过计算机视觉与深度学习技术,解决传统保洁模式中监管难、效率低的问题。系统涵盖垃圾滞留监测、地面清洁度评估、设施表面检测等功能,实现高精度(96%以上)、实时响应(&lt;200毫秒)。基于开源TensorFlow与Kubernetes架构,支持灵活部署与定制开发,适用于商场、机场等场景,提升管理效率40%以上。未来可扩展至气味监测等领域,推动保洁管理智能化升级。
176 26
|
5月前
|
传感器 人工智能 边缘计算
AI赋能油田巡检——无人机视频监控系统的技术解析
无人机油田巡检系统融合无人机硬件与AI视频监控技术,实现全域覆盖、智能分析和高效管理。通过多旋翼/固定翼无人机搭载高分辨率摄像头及传感器,采集多维数据;结合YOLOv9等算法进行异常检测,准确率高达98%。系统支持5G实时传输、边缘计算及集中化管理平台,提供可视化监控与预测性维护。基于开源框架设计,灵活扩展且成本低,大幅提升油田巡检效率与安全性。
525 0
|
7月前
|
人工智能 监控 数据安全/隐私保护
AI视频监控在大型商场的隐私保护技术
为保障隐私合规,商场采取数据加密与匿名化处理,防止敏感信息泄露;同时通过透明性声明和合法授权,确保顾客知情并同意监控措施。技术手段包括加密算法保护、去除身份识别细节,并在显眼位置张贴隐私政策,采用电子屏幕、语音提示或二维码获取顾客同意,确保监控行为合法合规。
215 0
|
8月前
|
存储 人工智能 监控
AI视频监控技术在公租房管理中的应用:提升监管精准度与效率
该AI视频监控系统具备1080P高清与夜视能力,采用深度学习技术实现高精度人脸识别(误识率1%),并支持实时预警功能,响应时间小于5秒。系统支持私有化部署,保障数据隐私安全,适用于大规模公租房社区管理,可容纳10万以上人脸库。基于开源架构和Docker镜像,一键部署简单快捷,确保24小时稳定运行,并提供详细的后台数据分析报表,助力政府决策。
247 5
|
9月前
|
机器学习/深度学习 传感器 人工智能
AI视频监控系统在养老院中的技术实现
AI视频监控系统在养老院的应用,结合了计算机视觉、深度学习和传感器融合技术,实现了对老人体征、摔倒和异常行为的实时监控与分析。系统通过高清摄像头和算法模型,能够准确识别老人的动作和健康状况,并及时向护理人员发出警报,提高护理质量和安全性。
474 14
|
9月前
|
传感器 机器学习/深度学习 人工智能
AI视频监控卫士技术介绍:智能化河道管理解决方案
AI视频监控卫士系统,通过高清摄像头、智能传感器和深度学习技术,实现河道、水库、城市水务及生态保护区的全天候、全覆盖智能监控。系统能够自动识别非法行为、水质变化和异常情况,并实时生成警报,提升管理效率和精准度。
711 13
|
9月前
|
机器学习/深度学习 传感器 人工智能
开源AI视频监控系统在监狱安全中的应用——实时情绪与行为分析、暴力预警技术详解
针对监狱环境中囚犯情绪波动和复杂人际互动带来的监控挑战,传统CCTV系统难以有效预警暴力事件。AI视频监控系统基于深度学习与计算机视觉技术,实现对行为、情绪的实时分析,尤其在低光环境下表现优异。该系统通过多设备协同、数据同步及自适应训练,确保高精度识别(95%以上)、快速响应(&lt;5秒),并具备24小时不间断运行能力,极大提升了监狱安全管理的效率与准确性。
735 1
|
9月前
|
机器学习/深度学习 人工智能 监控
AI视频监控技术的核心优势与实践
AI视频监控技术结合了计算机视觉、深度学习和大数据分析,能够实时分析监控画面,识别异常行为和场景变化。其核心在于从“被动记录”转型为“主动识别”,提升监控效率并减少安全隐患。主要应用场景包括泳池管理、健身器械区域、人员密度预警和异常事件检测。系统架构支持多种摄像头设备,采用边缘计算和Docker部署,具备实时性、高准确率和扩展性等优势。未来将优化复杂场景适应性和实时计算负载,进一步提高系统性能。
1987 7
|
9月前
|
机器学习/深度学习 人工智能 边缘计算
24/7全时守护:AI视频监控技术的深度实现与应用分享
本文深入解析了AI视频监控系统在车间安全领域的技术实现与应用,涵盖多源数据接入、边缘计算、深度学习驱动的智能分析及高效预警机制,通过具体案例展示了系统的实时性、高精度和易部署特性,为工业安全管理提供了新路径。
2194 7
|
机器学习/深度学习 监控 自动驾驶
新视频分析技术TDViT发布:提升稠密视频分析效率
【2月更文挑战第16天】新视频分析技术TDViT发布:提升稠密视频分析效率
209 1
新视频分析技术TDViT发布:提升稠密视频分析效率