delphi海康
在Delphi中利用VFW和简易摄像头实现图像采集和处理

图1VFW模块关系图在Delphi 中利用VFW 和简易摄像头实现图像采集和处理程刚1,金毅仁2(1.安徽省教育招生考试院,合肥230022;2.合肥工业大学电气及自动化工程学院,合肥230009)摘要:在多媒体系统中,视频的捕获以及处理技术是其非常重要的一个组成部分。
主要介绍在Delphi 应用程序中利用VFW 和简易摄像头实现图像采集和处理,实现了视频流的捕获和单帧数据的捕获,并可进行存储。
关键词:VFW ;AVICAP ;SendMessage ;视频捕获;帧捕获Use VFW and Simple Camera to Carry out Image Capturing and Processingin DelphiCHENG Gang 1,JIN Yiren 2(1.Anhui Education Examinations Authority,Hefei 230022;2.School of Electric and Automation Engineering,Hefei University of Technology,Hefei 230009)Abstract:The technology of Image capturing and processing is a very important part of the multimedia system.The scheme mainly introduces how to use VFW and simple camera to carry out image capturing and processing technologies in Delphi,achieving the capturing of image-stream data and frame data and the storage of them.Key words:VFW ;AVICAP ;SendMessage ;ideo capture ;frame capture多媒体技术的不断发展给人们的生活带来了生机与活力,它已经深入到人们生活的方方面面,与人们的生活息息相关。
产品规格一览表

产品规格一览表项目名称:中牟县司法局社区矫正远程视频督察系统项目(社区矫正管理指挥平台及远程视频督察系统)序号货物名称品牌型号规格参数原产地制造商单位数量1高速扫描仪富士通FI-7125-SFADF高速扫描仪;纸张大小:最小A8,最大A4;图像传感器:彩色CCD×2((正面x1,背面x1);光源:白色LED×2;光学分辨率:50—600dpi(以1dpi增量进行变化);扫描速度:ADF:彩色25ppm/50ipm黑白灰度30ppm/60ipm;卡片扫描:一次可扫描3张塑料卡片或者二代身份证。
ADF容量:80张上海富士通电子元器件(上海)有限公司台12二代身份证阅读器新中新F200A-SF调制方式:ASK或BPSK;与卡片的通讯速率:不低于106Kbit/s;最大读卡距离:不小于30mm;供电电源:USB供电;接口:USB2.0兼容USB1.1或以上;使用平台:WIN98/2000/XP/WIN7或以上;开发工具:支持SDK/DELPHI/VB/PB等;哈尔滨哈尔滨新中新电子股份有限公司台13人证对比科密DF-8000-SF4.0寸以上触摸屏;指纹容量2000张以上;面部容量2000张以上;记录容量12万以上;读取矫正人员人脸、指纹特征,将其到次数、报到时间、人员信息写入矫正管理系广州广州科密股份有限公司台10-52016督察平台对接软件海康威视iVMS-8700/SF支持多系统一体化管理,包含视频、报警、门禁、可视对讲、停车场、访客、巡查、考勤、梯控、消费、动环、运维等多个子系统;支持HTTPS安全加密访问认证;支持角色功能访问权限、角色资源访问权限、角色组织划分,角色类型设置。
支持设备登录密码强度提醒,加强设备安全管理;支持监控点在离线状态检测、设备掉线报警;支持防暴力破解认证,支持验证码、连续登录尝试次数限制、用户IP地址验证;支持对实时和历史报警信息进行排序、过滤显示,并对查看的联动录像、报警详情;可导出查询结果;支持BS客户端、CS客户端、移动客户端(Android、iPhone)视频预览;支持自动在1/4/6/7/9/16/24画面分割模式间进行监控点轮巡预览,轮巡时间可设置,支持全屏显示;支持录像标签功能:可以在录像回放界面搜索录像标签,对搜索录像标签结果进行修改、删除;打开录像标签进行录像回放;该功能包括车牌标签功能;支持流媒体集群,负载均衡;支持人脸、卡片(身份证)、密码、指纹、指静脉等组合认证方式的配置;支持移动端电子地图应用,视频、门禁、报警防区信息展示与管控;杭州杭州海康威视数字技术股份有限公司套117矫正平台对接数据分发软件榕基RCSJ2.1实现将社区服刑人员入矫登记的人脸、身份证、指纹信息自动分发至对应的司法所,并通过人证对比设备对社区服刑人员进行智能点名、智能报到、智能学习;实现对社区服刑人员日常人证比对业务场景的动态数据展示,并可将比对结果直接上传至河南省社区矫正信息管理系统;实时从社区矫正信息管理系统自动同步服刑人员的基础数据。
办公软件高级应用第一章.ppt

1-7
办公 自动化
Lotus Notes/Domino
IBM公司宣布推出业界领先的消息和协作平台 —— IBM Lotus Notes/Domino 6.5。最新 版的 Lotus Notes/Domino 集成了 IBM Lotus 即时消息和网络会议功能,使用户可 以在线“感知”,还可以直接从收件箱或在 协作应用软件内启动即时消息功能进行会话 。用户可分别购买 Lotus Notes/Domino 的 即时消息功能和网络会议功能。
办公 自动化
1.1 办公自动化概述
三、办公自动化的功能
文字处理 文字的采集、输入、编辑和输出。
数据管理 数据的采集、整理、计算、排序、分 类、汇总。
多媒体信息处理 对图形、图像、声音、活动影 像进行采集、编辑、存储、加工、播放和转换。
电子邮件 将数据、文字、声音、图形和图像等 综合信息传输到另一地或多地。
1-2
办公
1.1 办公自动化概述
自动化
办公自动化将人、计算机和信息三者结合 为一个办公体系,构成一个服务于办公业务 的人-机信息处理系统。
办公自动化是一个不断发展的概念,像电 子商务、电子政务、企业信息化、教育信息 化、数字家庭等都可以看成是它的延伸。
1-3
办公
1.1 办公自动化概述
自动化
一、办公自动化 Office Automation, OA
第一章 办公自动化基础
1-1
办公
1.1 办公自动化概述
自动化
办公:为了实现一个具体的工作目标,所 从事的处理人群集体事物或信息的活动。
影响办公方式的因素:办公设备。
办公设备的演变历史 农业时代 纸、笔、算盘(老三件) 工业时代 打字机、电话机、电传机(老三机)
海康威视产品说明书

TITLEPART NUMBER NUT HEX. 3/8-16 X 9/16 ACROSS FLAT X 21/64 THICK 400145000WASHER 3/8 X 13/16 X 1/16400322000M3: HEAT EXCHANGER ASSEMBLY 8 kW 790710008M3: HEAT EXCHANGER ASSEMBLY 10 kW 790710010M3: HEAT EXCHANGER ASSEMBLY 12 kW 790710012M3: HEAT EXCHANGER ASSEMBLY 16 kW 790710016M3: HEAT EXCHANGER ASSEMBLY 20 kW790710020M3: WRAPPER WELD ASSEMBLY WITH INSULATION 790720000INSULATION (WRAPPER)790723000INSULATION (CENTER PARTITION)790732000M3: LEFT END PLATE 790734000M3: RIGHT END PLATE 790735000WALL BRACKET790736000M3: CONTROL BOX COVER 790739000M3: CIRCUIT BREAKER COVER790740000TITLEPART NUMBER "RATING PLATE" LABEL790829000SCREW 8x3/8 HEX WASHER ZN PLATE TYPE B 790834000"TOP" LABEL790844000M2, M3: PLUMBING PACKAGE 790850000"CONTROL" LABEL 790853000"ENERGYGUIDE" LABEL790854000"DISCONNECT ALL POWER" LABEL 790859000M3: ELECTRIC PARTITION ASSY 8 KW 1 PH 795320108M3: ELECTRIC PARTITION ASSY 10 KW 1 PH 795320110M3: ELECTRIC PARTITION ASSY 12 KW 1 PH 795320112M3: ELECTRIC PARTITION ASSY 16 KW 1 PH 795320116M3: ELECTRIC PARTITION ASSY 20 KW 1 PH 795320120M3: ELECTRIC PARTITION ASSY12KW 3 PH 795320312M3: ELECTRIC PARTITION ASSY 16KW 3 PH 795320316M3: ELECTRIC PARTITION ASSY 20KW 3 PH 795320320WIRING LABELPER MODEL MANUAL PACKAGE FOR M3792804000790735000790736000790734000790710008790710010790710012790710016790710020790720000790834000400322000400145000790739000790740000790854000790853000790859000795320320795320316795320312795320120795320116795320112795320110795320108PER MODEL790844000790829000HEATEXCHANGER ASSEMBLYPARTITION ASSEMBLYWhen ordering replacement parts: specify the model number and serial number.For replacement parts, heating contractors should contact their Slant/Fin boiler distributor.PART NO. 790836000(REF EH-M3-10PL) REV D790723000790732000T I T L EP A R T N U M B E R R E L A Y S I N G L E P O L E N O R M A L L Y O P E N440543000S N A P B U S H I N G Ø1.125 H O L E X .875" I D500373000G R O U N D S C R 10-32x 3/8 G R E E N G N D65 0666 000H E X N U T 8-32 Z I N C P L A T E D650668000T R A N S F O R M E R 40V A 120/24V 11" L E A D S M A T E -N -L O C K P L U G S660528000M 2, M 3: O P E R A T I N G C O N T R O L B R A C K E T790030000M 2, M 3: P O W E R I S O L A T I N G C O V E R790038000M 2, M 3: C I R C U I T B R E A K E R B R A C K E T (F O R 3 & 5 B R E A K E R S )79-0062M 2, M 3: D I N R A I L (5 B R E A K E R S )790221000S P A C E R (T H R E A D E D ) 8-32 x 1/2 x 1/4 O D A L U M790222100W A S H E R I D .173 O .D ..375 x .07 N Y L O N790223000M A C H I N E S C R E W 8-32 X 1" H E X . H D Z N P L A T E D790225000S T A N D O F F I N S U L A T O R 1" (1/4-20 X 5/16)790266000E Q U I P M E N T S O L D E R L E S S L U G 2/0 A W G790280000S C R E W 1/4-20 X 5/8 H E X Z N P L A T E D G R A D E 5790281000T I T L EP A R T N U M B E R N U T - 1/4-20 C E N T E R L O C K Z I N C P L A T E D S T E E L W A X E D 790282000O P E N /C L O S E D S N A P B U S H I N G (Ø1.093 H O L E )790283000H E X H E A D C A P S C R E W 1/4-20 X 3/8 Z N P L A T E D G R A D E 5790285000M I N I P O W E R D I S T R I B U T I O N B L O C K S I N G L E P H A S E 2-P O L E 175A (U L )790387002M I N I P O W E R D I S T R I B U T I O N B L O C K 3-P H A S E 3-P O L E 175A (U L )790387003T E K M A R 4-S T A G E C O N T R O L L E R A S S E M B L Y790390000P O W E R R E L A Y790391000C I R C U I T B R E A K E R 10A B -T R I P U L 1077D I N R A I L M O U N T790392000C I R C U I T B R E A K E R 25A B -T R I P U L 1077D I N R A I L M O U N T790393000C I R C U I T B R E A K E R 30A B -T R I P U L 1077D I N R A I L M O U N T790394000C I R C U I T B R E A K E R 50A B -T R I P U L 1077D I N R A I L M O U N T790395000C I R C U I T B R E A K E R 60A B -T R I P U L 1077D I N R A I L M O U N T790396000U N I V E R S A L S E N S O R 071 (96")790400000M 3: R E L A Y & S E R V I C E P A R T I T I O N790726000M 3: C E N T E R P A R T I T I O N790731000T I T L EP A R T N U M B E RM 3: I N S U L A T I O N790732000S C R E W 8x 3/8 H E X W A S H E R Z N P L A T E T Y P E B790834000"C I R C U L A T O R P U M P " L A B E L790842000L A B E L "N E U T R A L "790845000"G R O U N D " L A B E L790846000"G R O U N D " L A B E L - S M A L L790858000L A B E L "L 1, L 2"790849000"L 3" L A B E L (3-P H A S E M O D E L S O N L Y )790851000"C O N T R O L " L A B E L790853000M 2, M 3: I N T E R F A C E B O A R D791036000"I N T E R F A C E B O A R D W I R I N G " L A B E L791080000S C R E W 6X 3/8 Z N P L T D , P H I L L I P S P A N H D , T H R D C T N G910408000D I N R A I L S T O P /S P A CE R79013700079073200079028300050037300079072600065 0666 00079003800079022210079022300079103600079022300065066800079-0062790221000790137000660528000790387003790387002790137000790393000790394000790395000790396000790392000790390000910408000500373000790283000500373000790726000790281000790280000790266000790285000790225000440543000790391000790842000791080000790858000790853000790282000790845000790030000790400000790846000M 3: P A R T I T I O N A S S E M B L Y79013700079073100079084900079085100079083400079073200020 K W16 K W 12 K W 10 K W 8 K W D E S C R I P T I O NP A R T N U M B E R 111111/2" N P T P L U G -S Q U A R E H E A D40023900022222P L U G 3/4 N P T C O U N T E R S U N K H E A D S T E E L46051700011111I M M E R S I O N W E L L 1/2" N P T X 1.5"79009900011111H -C L I P W I R E R E T A I N E R F O R I M M E R S I O N W E L L79011900044444H E A T E R E L E M E N T G A S K E T7903030004302H E A T E R E L E M E N T 4k W 240V790304000420H E A T E R E L E M E N T 5k W 240V790305000122B L A N K S C R E W P L U G79030600022222H I G H L I M I T C O N T R O L S E N S O R79039800011111M I N I T R O N E L E C T R I C B O I L E R C A S T I N G79601010011111R E D U C I N G B U S H I N G 1/2 x 1/4 (B L .M A L L E A B L E )90217905111111T R I D I C A T O R 910373061790305000790304000790099000910373061902179051790303000790306000790398000790119000460517000796010100400239000M 3: H E A T E X C H A N G E R A S S E M B L YU.S.A.Slant/Fin Corporation • 100 Forest Drive Greenvale, NY 11548 • 516-484-2600 CanadaSlant/Fin LTD/LTEE • 400 Ambassador Drive, Mississauga, Ontario L5T 2J3 • 905-677-8400 www.slantfin.ca©2020 Slant/Fin Corp. • Publication EH-M2-10PL RevD • Printed in U.S.A. 1220。
网络通用字符叠加器(NE-GQ6000N-OSD)说明书

济南智嵌测控网络通用字符叠加器NE-GQ6000N-OSD操作手册V1.1济南智嵌测控技术有限公司济南智嵌测控声明本手册适用于支持网络摄像机的字符叠加器(NE-GQ6000N-OSD)。
本手册可能包含技术上不准确的地方或印刷错误。
本手册的内容将做不定期的更新,恕不另行通知;更新的内容将会在本手册的新版本中加入。
我们随时会改进或更新本手册中描述的产品或程序。
若存在手册中对产品的描述与实物不符,一律以实物为准。
注意事项·网络高清字符叠加器上不能放置盛有液体的容器(例如水杯)。
·将网络高清字符叠加器放置在通风良好的位置。
·网络高清字符叠加器工作在允许的温度及湿度范围内。
·网络高清字符叠加器内电路板上的灰尘在受潮后会引起短路,请保证网络高清字符叠加器所处环境的干爽。
济南智嵌测控目录1 产品简介 (4)1.1产品概述 (4)1.2 功能特点 (4)1.3物品清单 (5)1.4兼容性 (5)1.5 技术参数 (5)1.6订货型号 (5)2 接线定义 (6)3软件设置 (8)3.1叠加器字符配置 (8)3.1.1配置软件 (8)3.1.2软件设置 (10)3.2测试软件 (12)3.2.1配置软件 (12)3.2.2软件设置 (13)3 快速硬件连接 (14)3.1 设备连接 (14)3.2 数据叠加 (14)3.2.1 串口通讯方式 (14)3.4 系统框图 (14)4通信协议 (15)4.1 通讯数据包格式 (15)4.2 数据返回 (15)4.3 指令列表 (15)4.4 16进制指令应用举例 (16)4.5 CRC8计算代码 (16)5 显示效果 (19)6 固件升级 (19)6.1网络升级 (19)6.1.1硬件准备 (19)6.1.2软件准备 (19)6.1.3升级流程 (20)6.2串口升级 (23)7服务与支持 (23)8 联系方式 ...................................................................................................................... 错误!未定义书签。
海康威视平台软件介绍[指南]
![海康威视平台软件介绍[指南]](https://img.taocdn.com/s3/m/9063630e2379168884868762caaedd3383c4b583.png)
软件平台1 平台概述海康威视长期关注企业级监控系统,并致力于企业级监控平台的开发,和众多合作伙伴一同深入挖掘企业监控的核心内容,全新推出专用于企业监控的软件平台—HKS-5000。
在满足用户普通监控要求的基础上,HKS—5000平台充分考虑用户的使用习惯、细心设计用户的常用功能。
单一的视频监控系统(CCTV)早就不能满足用户日益增长的使用需求,面对日益复杂的社会环境,必须将视频监控系统与报警系统、门禁系统、巡更系统紧密结合,根据不同企业用户的个性化需求,HKS—5000平台扩展层接口便可实现大安防系统融合,同时,海康威视一直致力于智能监控系统的研发,HKS—5000平台也为智能视觉分析系统预留接口。
HKS—5000视频监控平台能很好的完成以下功能:⏹全网设备集中配置,具备巡检、心跳保活、自修复;⏹视频、音频分级实时预览、回放(本地和远程);⏹海量数据分散存储、集中管理、容灾备份;⏹前端设备(IP Cam , IP Dome)远程访问与控制;⏹广泛报警接入,报警信息主动上传,联动报警输出;⏹硬解码上电视墙,数字矩阵切换、多分屏、轮巡;⏹用户权限统一分配,细化至通道级别,具备登陆、验证;⏹电子地图热点、热区联动效应;同时,具备以下优秀的性能:⏹实用性――以客户需求为宗旨,摒弃华而不实的功能,⏹适应性――对行业用户的特有功能进行定制,以适应用户的特殊需求⏹可靠性――选用的硬件、软件均具备数万甚至十万平均无故障时间,并为关键设备、关键部件设计冗余备份⏹安全性――鉴于监控系统特殊性,安全保密工作尤为重要,从网络建设、平台验证、设备加密等立体化保障系统安全⏹先进性――严格遵循系统工程的设计准则,科学合理地设计,最大程度地采用成熟、可继承、具备广阔发展前景的先进技术,使系统在未来数年内不落后,保护用户投资⏹开放性、易扩展性――严格遵循相关技术的国际、国内和行业标准,确保系统之间的透明性和互联互通;在系统设计时,合理预测未来扩容需求,科学设计余量⏹易管理性、易维护性――支持Windows操作系统,支持数种国际通用语言,支持全中文管理界面,具有完善的使用手册和帮助文档,自动检测网内设备运行状态,以图文结合方式列出设备异常情况,辅助管理人员排查处理2 权限管理企业级监控系统往往覆盖范围广、区域跨度大、设备类型多,如果监控平台能集中管理配置管理所有设备,一方面能综合管理,及时有效地了解设备状态,另一方面可简化操作,易于维护。
海康威视解决方案

(1)前端设备:选用海康威视高清网络摄像机,具备低照度、宽动态、3D降噪等技术,确保在各种环境下都能获得清晰的视频画面。
(2)传输设备:采用光纤、网线、无线等传输方式,根据项目需求灵活选用。
(3)中心处理和存储设备:选用海康威视高性能服务器和存储设备,满足大量视频数据的处理、存储和检索需求。
(1)建立完善的运维管理制度,确保系统稳定运行。
(2)定期对系统进行检查、维护,确保设备完好。
(3)对运维人员进行培训,提高运维能力。
本方案旨在为用户提供一套合法合规、高效可靠的安防监控解决方案,助力我国公共安全事业发展。海康威视将持续关注技术发展,为用户提供优质的产品和服务。
第2篇
海康威视解决方案
五、售后服务与运维保障
1.售后服务
海康威视提供全面的售后服务,包括设备维修、技术支持、软件升级等。
2.运维保障
(1)建立健全运维管理制度,确保系统稳定运行。
(2)定期对系统进行检查、维护,确保设备完好。
(3)对运维人员进行培训,提高运维能力。
本方案旨在为用户提供一套合法合规、高效可靠的安防监控解决方案。海康威视将持续关注技术发展,为用户提供优质的产品和服务,为我国公共安全事业贡献力量。
2.项目验收
项目验收分为初验、试运行和终验三个阶段。初验主要检查系统功能、性能等是否符合设计方案;试运行期间,对系统进行实际运行测试,确保稳定可靠;终验则对整个项目进行综合评价,确保项目达到预期目标。
五、售后服务与运维保障
1.售后服务
海康威视提供完善的售后服务,包括设备维修、技术支持、软件升级等。
2.运维保障
(2)数据传输:采用有线与无线相结合的传输方式,确保视频数据实时、稳定地传输至中心处理与存储模块。
delphi版的YV12toRGB,针对海康视频服务器视频解码

delphi版的YV12toRGB,针对海康视频服务器视频解码网上有C#,JAVA,C++版本的YV12toRGB算法代码,笔者因项目需要,特根据网上资料综合整改后,成功转换成了DELPHI版的。
关于海康视频服务器SDK以及开发资料,请查阅海康官方网站。
function YV12_To_RGB(yv12:pchar;nWidth,nHeight:integer;v ar rgb24:pchar):boolean;constTable_fv1:array[0..255] of integer=( -180, -179, -177, -176, -1 74, -173, -172, -170, -169, -167, -166, -165, -163, -162, -160, -15 9, -158, -156, -155, -153,-152, -151, -149, -148, -146, -145, -144, -142, -141, -139, -13 8, -137, -135, -134, -132, -131, -130, -128, -127, -125, -124, -123, -121, -120, -118,-117, -115, -114, -113, -111, -110, -108, -107, -106, -104, -10 3, -101, -100, -99, -97, -96, -94, -93, -92, -90, -89, -87, -86, -85, -83, -82, -80, -79,-78, -76, -75, -73, -72, -71, -69, -68, -66, -65, -64, -62, -61, -5 9, -58, -57, -55, -54, -52, -51, -50, -48, -47, -45, -44, -43, -41, -40, -38, -37, -36,-34, -33, -31, -30, -29, -27, -26, -24, -23, -22, -20, -19, -17, -1 6, -15, -13, -12, -10, -9, -8, -6, -5, -3, -2, 0, 1, 2, 4, 5, 7, 8, 9, 11, 1 2, 14, 15,16, 18, 19, 21, 22, 23, 25, 26, 28, 29, 30, 32, 33, 35, 36, 37, 39, 40, 42, 43, 44, 46, 47, 49, 50, 51, 53, 54, 56, 57, 58, 60, 61, 63, 64, 65, 67, 68, 70,71, 72, 74, 75, 77, 78, 79, 81, 82, 84, 85, 86, 88, 89, 91, 92, 93, 95, 96, 98, 99, 100, 102, 103, 105, 106, 107, 109, 110, 112, 113, 1 14, 116, 117, 119,120, 122, 123, 124, 126, 127, 129, 130, 131, 133, 134, 136, 137, 138, 140, 141, 143, 144, 145, 147, 148, 150, 151, 152, 154, 155, 157, 158, 159, 161, 162,164, 165, 166, 168, 169, 171, 172, 173, 175, 176, 178 );Table_fv2:array[0..255] of integer=( -92, -91, -91, -90, -89, -8 8, -88, -87, -86, -86, -85, -84, -83, -83, -82, -81, -81, -80, -79, -78, -78, -77, -76, -76,-75, -74, -73, -73, -72, -71, -71, -70, -69, -68, -68, -67, -66, -6 6, -65, -64, -63, -63, -62, -61, -61, -60, -59, -58, -58, -57, -56, -56, -55, -54, -53,-53, -52, -51, -51, -50, -49, -48, -48, -47, -46, -46, -45, -44, -4 3, -43, -42, -41, -41, -40, -39, -38, -38, -37, -36, -36, -35, -34, -33, -33, -32, -31,-31, -30, -29, -28, -28, -27, -26, -26, -25, -24, -23, -23, -22, -2 1, -21, -20, -19, -18, -18, -17, -16, -16, -15, -14, -13, -13, -12, -11, -11, -10, -9,-8, -8, -7, -6, -6, -5, -4, -3, -3, -2, -1, 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 20, 2 0, 21,22, 22, 23, 24, 25, 25, 26, 27, 27, 28, 29, 30, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 37, 38, 39, 40, 40, 41, 42, 42, 43, 44, 45, 45, 46, 47, 47, 48,49, 50, 50, 51, 52, 52, 53, 54, 55, 55, 56, 57, 57, 58, 59, 60, 60, 61, 62, 62, 63, 64, 65, 65, 66, 67, 67, 68, 69, 70, 70, 71, 72, 72, 73, 74, 75, 75,76, 77, 77, 78, 79, 80, 80, 81, 82, 82, 83, 84, 85, 85, 86, 87, 87, 88, 89, 90, 90 );Table_fu1:array[0..255] of integer=( -44, -44, -44, -43, -43, -4 3, -42, -42, -42, -41, -41, -41, -40, -40, -40, -39, -39, -39, -38, -38, -38, -37, -37, -37,-36, -36, -36, -35, -35, -35, -34, -34, -33, -33, -33, -32, -32, -3-27, -26, -26,-26, -25, -25, -25, -24, -24, -24, -23, -23, -22, -22, -22, -21, -2 1, -21, -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, -15,-15, -15, -14, -14, -14, -13, -13, -13, -12, -12, -11, -11, -11, -1 0, -10, -10, -9, -9, -9, -8, -8, -8, -7, -7, -7, -6, -6, -6, -5, -5, -5, -4, -4, -4, -3,-3, -3, -2, -2, -2, -1, -1, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26,26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 39,40, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43 );Table_fu2:array[0..255] of integer=( -227, -226, -224, -222, -2 20, -219, -217, -215, -213, -212, -210, -208, -206, -204, -203, -20 1, -199, -197, -196, -194,-192, -190, -188, -187, -185, -183, -181, -180, -178, -176, -17 4, -173, -171, -169, -167, -165, -164, -162, -160, -158, -157, -155, -153, -151, -149, -148,-146, -144, -142, -141, -139, -137, -135, -134, -132, -130, -12 8, -126, -125, -123, -121, -119, -118, -116, -114, -112, -110, -109, -107, -105, -103, -102,-100, -98, -96, -94, -93, -91, -89, -87, -86, -84, -82, -80, -79, -77, -75, -73, -71, -70, -68, -66, -64, -63, -61, -59, -57, -55, -54, -5 2, -50, -48, -47,-45, -43, -41, -40, -38, -36, -34, -32, -31, -29, -27, -25, -24, -22, 14, 15,17, 19, 21, 23, 24, 26, 28, 30, 31, 33, 35, 37, 39, 40, 42, 44, 46, 47, 49, 51, 53, 54, 56, 58, 60, 62, 63, 65, 67, 69, 70, 72, 74, 76, 78, 79, 81, 83, 85,86, 88, 90, 92, 93, 95, 97, 99, 101, 102, 104, 106, 108, 109, 11 1, 113, 115, 117, 118, 120, 122, 124, 125, 127, 129, 131, 133, 134, 136, 138, 140, 141, 143,145, 147, 148, 150, 152, 154, 156, 157, 159, 161, 163, 164, 16 6, 168, 170, 172, 173, 175, 177, 179, 180, 182, 184, 186, 187, 189, 191, 193, 195, 196, 198,200, 202, 203, 205, 207, 209, 211, 212, 214, 216, 218, 219, 22 1, 223, 225 );var nYLen,nHfWidth, i, j, m, n, x, y,rdif, invgdif, bdif,py:intege r;yData,vData,uData:pchar;rgb:array[0..2] of integer;addHalf:boolean;beginnYLen:=nWidth*nHeight;nHfWidth:=nWidth shr 1;if (nYLen<1) or (nHfWidth<1) then result:=false;yData:=yv12;vData:=@yData[nYLen];uData:=@vData[nYLen shr 2];m := - nWidth;n := - nHfWidth;addHalf := true;for y:=0 to nHeight-1 dobeginm :=m+nWidth;if addHalf thenbeginn:=n+nHfWidth;addHalf := false;end elsebeginaddHalf := true;end;for x:=0 to nWidth-1 dobegini := m + x;j := n + (x shr 1);py := integer(byte(yData[i]));rdif := Table_fv1[integer(byte(vData[j]))];invgdif := Table_fu1[integer(byte(uData[j]))] + Table_fv2[inte ger(byte(vData[j]))];bdif := Table_fu2[integer(byte(uData[j]))];rgb[2] := py + rdif;rgb[1] := py - invgdif;rgb[0] := py + bdif;j :=nYLen-nWidth- m + x; //这个地方是关键,网上原代码(C#版)是没有红色部份的,结果转出来的图像是倒的、反的i := (j shl 1) + j;for j:=0 to 2 dobegin// rgb24[i+j]:=char(ifthen((rgb[j] < 0),0,ifthen((rgb[j] > 255), 255,rgb[j])));//这里上面那行怪怪的,改了一下if (rgb[j]>=0) and (rgb[j]<=255) then rgb24[i+j]:=Char(rgb [j]);if rgb[j]<0 then rgb24[i+j]:=Char(0);if rgb[j]>255 then rgb24[i+j]:=Char(255);end;end;end;result:=true;end;结合海康视频服务器视频解码调用示例:procedure TDecCBFun(nPort:LongInt;pBuf:pchar;nSize:dwor d;pFrameInfo:PHik_FRAME_INFO;nReserved1,nReserved2:LongI nt); stdcall;varBmp: TBitmap;pBMIInfo: PBITMAPINFO;pRGBBuf:pchar;beginpBMIInfo := AllocMem(sizeof(TBITMAPINFO)+ (255 * sizeof (TRGBQuad)));//设定BMP的头信息pBMIInfo^.bmiHeader.biSize := sizeof(BITMAPINFOHEADE R);pBMIInfo^.bmiHeader.biWidth := pFrameInfo.nWidth;pBMIInfo^.bmiHeader.biHeight := pFrameInfo.nHeight;pBMIInfo^.bmiHeader.biPlanes := 1;pBMIInfo^.bmiHeader.biBitCount := 24;pBMIInfo^.bmiHeader.biCompression := BI_RGB;pBMIInfo^.bmiHeader.biSizeImage := 0;pBMIInfo^.bmiHeader.biXPelsPerMeter := 0;pBMIInfo^.bmiHeader.biYPelsPerMeter := 0;pBMIInfo^.bmiHeader.biClrUsed := 0;pBMIInfo^.bmiHeader.biClrImportant := 0;Bmp := TBitmap.Create;Bmp.Width:= pFrameInfo.nWidth;Bmp.Height := pFrameInfo.nHeight;Bmp.PixelFormat := pf24bit;g_RecogImage_Heigh:=pFrameInfo.nHeight;g_RecogImage_Width:=pFrameInfo.nWidth;pRGBBuf :=AllocMem(40000000); //缓存要足够大,不然高清图片处理会报错SetStretchBltMode(Bmp.Canvas.Handle,COLORONCOLOR);tryApplication.ProcessMessages;if (nSize>0) then YV12_To_RGB(pBuf,pFrameInfo.nWidth,pFr ameInfo.nHeight,pRGBBuf);//实时显示视频流SetDIBitsT oDevice(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bm p.Height,0, 0, 0, pBMIInfo^.bmiHeader.biHeight,pRGBBuf,pBMIInfo^, DIB_RGB_COLORS);finallyFreeMem(pRGBBuf);FreeMem(pBMIInfo);Bmp.Free;end;end;procedure TRealDataCallBack(lRealHandle:longint;dwDataTy pe:DWORD; pBuffer:pBYTE; dwBufSize:DWORD; dwUser:DWOR D);stdcall;begin//内存流处理if dwDataType=NET_DVR_SYSHEAD thenbeginif not PlayM4_GetPort(lPort) thenbeginexit;end;if (dwBufSize>0) thenbeginif not PlayM4_SetStreamOpenMode(lPort,STREAME_REALTI ME) thenbeginexit;end;if not PlayM4_OpenStream(lPort,pBuffer,dwBufSize,1024*10 24) thenbeginexit;end;end;end;if dwDataType= NET_DVR_STREAMDATA thenbeginif (dwBufSize>0) and (lPort<>-1) thenbeginif not PlayM4_SetDecCBStream(lPort,1) thenbeginexit;end;end;if not PlayM4_SetDecCallBackEx(lPort,@TDecCBFun,nil,0) th en //试版本不同,调用有所不同beginexit;end;end;end;procedure InitHik(var Hv: ArrayHikVedio);var nHvLen,i,nRealHandle:Integer;CLIENTINFO:array of NET_DVR_CLIENTINFO;DEVICEINFO:array of NET_DVR_DEVICEINFO;beginNET_DVR_Init();NET_DVR_SetConnectTime(2000,1);NET_DVR_SetReconnect(10000, true);Setlength(DEVICEINFO,2);Setlength(CLIENTINFO,2);nHvLen:=length(Hv);for i:=0 to nHvLen-1 dobeginif hv[i].sIP <>'' thenbeginHv[i].nUserID:=NET_DVR_Login(pCHAR(Hv[i].sIP),Hv[i].nPort, pchar(Hv[i].sUser),pchar(Hv[i].sPower),@DEVICEINFO[i]);if (Hv[i].nUserID<0) thenbeginNET_DVR_Cleanup();break;end;CLIENTINFO[i].hPlayWnd :=Hv[i].panShow.Handle;CLIENTINFO[i].lChannel :=Hv[i].nWay;CLIENTINFO[i].lLinkMode :=0;nRealHandle:=NET_DVR_RealPlay(Hv[i].nUserID,@CLIENTIN FO[i]);Hv[i].nRealHandle:=nRealHandle;NET_DVR_SetRealDataCallBack(nRealHandle,@TRealDataCal lBack,Hv[i].nUserID);end;end;end;结构体说明:THikVedio=RecordsIP:string;sUser:string;sPower:string;nPort:integer;nWay:integer;nUserID:integer;nRealHandle:integer;panShow:TPanel;//用于显示图像imgShow:TImage;//显示图片end;ArrayHikVedio= array of THikVedio;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
type//HCNetSDK头文件类型声明Delphi改写//基本数据类型声明DWORD=LongWord;//WORD:Word;USHORT=Word;LONG=Longint;//BYTE=char ;//#define BOOL intUINT=Longword;LPVOID=Pointer;HANDLE=Pointer;LPDWORD=^LongWord;//typedef unsigned long long UINT64;//NET_DVR_Login_V30()参数结构type LPNET_DVR_DEVICEINFO_V30=^NET_DVR_DEVICEINFO_V30;NET_DVR_DEVICEINFO_V30=RecordsSerialNumber:array [0..SERIALNO_LEN-1] of BYTE ; //序列号byAlarmInPortNum:BYTE ; //报警输入个数byAlarmOutPortNum:BYTE ; //报警输出个数byDiskNum:BYTE ; //硬盘个数byDVRType:BYTE ; //设备类型, 1:DVR 2:ATM DVR 3:DVS ......byChanNum:BYTE ; //模拟通道个数byStartChan:BYTE ; //起始通道号,例如DVS-1,DVR - 1byAudioChanNum:BYTE ; //语音通道数byIPChanNum:BYTE ; //最大数字通道个数byZeroChanNum:BYTE ; //零通道编码个数 //2010-01-16byMainProto:BYTE ; //主码流传输协议类型 0-private, 1-rtspbySubProto:BYTE ; //子码流传输协议类型0-private, 1-rtspbySupport:BYTE ; //能力,位与结果为0表示不支持,1表示支持,//bySupport & 0x1, 表示是否支持智能搜索//bySupport & 0x2, 表示是否支持备份//bySupport & 0x4, 表示是否支持压缩参数能力获取//bySupport & 0x8, 表示是否支持多网卡//bySupport & 0x10, 表示支持远程SADP//bySupport & 0x20, 表示支持Raid卡功能//bySupport & 0x40, 表示支持IPSAN 目录查找//bySupport & 0x80, 表示支持rtp over rtspbySupport1:BYTE ; // 能力集扩充,位与结果为0表示不支持,1表示支持 //bySupport1 & 0x1, 表示是否支持snmp v30//bySupport1 & 0x2, 支持区分回放和下载byRes1:BYTE ;wDevType:WORD ; //设备型号byRes2:array [0..15] of BYTE ; //保留end;//NET_DVR_Login_V30()参数结构end//回调函数无返回值声明为过程type fSerialDataCallBack=procedure(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DWO RD;dwUser:DWORD );//stdcall;//type fSerialDataCallBack=procedure(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DW ORD;dwUser:DWORD )of object ;// stdcall;//external 'HCNetSDK.dll';//自动生成TForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Label1: TLabel;Edit1: TEdit;Button3: TButton;Label2: TLabel;Edit2: TEdit;Button4: TButton;Button5: TButton;Button6: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);procedure Button6Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;ErrorValues:LongWord;szSendBuf:array [0..10] of char;szReciBuf:array [0..10] of char;//g_fSerialDataCallBack:fSerialDataCallBack;lUserID:LONG;struDeviceInfo:NET_DVR_DEVICEINFO_V30;DVRIP,DVRUserName,DVRPassWord: String;lTranHandle:LONG;iSelSerialIndex:integer;dwUser:DWORD;lSerialChan:LONG;//procedure g_fSerialDataCallBack(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DWOR D;dwUser:DWORD );stdcall;implementation{$R *.dfm}function NET_DVR_Init():boolean;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_Init';function NET_DVR_Cleanup():boolean;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_Cleanup';function NET_DVR_SetConnectTime(dwWaitTime,dwTryTimes:DWORD):boolean;stdcall;external ' HCNetSDK.dll' name 'NET_DVR_SetConnectTime';function NET_DVR_SetReconnect(dwInterval:DWORD;bEnableRecon:boolean):boolean;stdcall;ex ternal 'HCNetSDK.dll' name 'NET_DVR_SetReconnect';function NET_DVR_GetLastError():LongWord;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_Get LastError';function NET_DVR_Login_V30(sDVRIP:Pchar; wDVRPort:WORD; sUserName:Pchar; sPassword:Pc har; lpDeviceInfo:LPNET_DVR_DEVICEINFO_V30):LONG;stdcall;external 'HCNetSDK.dll' name 'NET _DVR_Login_V30';function NET_DVR_Logout_V30(lUserID:LONG):boolean;stdcall;external 'HCNetSDK.dll' name 'NE T_DVR_Logout_V30';function NET_DVR_SerialStart(lUserID:LONG;iSelSerialIndex:LONG; g_fSerialDataCallBack:fSerialD ataCallBack; dwUser:DWORD):LONG;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_SerialStart'; function NET_DVR_SerialStop(lTranHandle:LONG):boolean;stdcall;external 'HCNetSDK.dll' name ' NET_DVR_SerialStop';function NET_DVR_SerialSend(lTranHandle:LONG; lSerialChan:LONG; pSendBuf:PChar; dwBufSize :DWORD):boolean;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_SerialSend';procedure g_fSerialDataCallBack(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DWORD; dwUser:DWORD );//stdcall;//external 'HCNetSDK.dll' ;beginmessagedlg('回调过程!',mterror,[mbyes],0);szReciBuf[0] := pRecvDataBuffer[0];szReciBuf[1] := pRecvDataBuffer[1];szReciBuf[2] := pRecvDataBuffer[2];szReciBuf[3] := pRecvDataBuffer[3];szReciBuf[4] := pRecvDataBuffer[4];szReciBuf[5] := pRecvDataBuffer[5];szReciBuf[6] := pRecvDataBuffer[6];szReciBuf[7] := pRecvDataBuffer[7];szReciBuf[8] := pRecvDataBuffer[8];szReciBuf[9] := pRecvDataBuffer[9];szReciBuf[10] := pRecvDataBuffer[10];end;procedure TForm1.Button1Click(Sender: TObject); //按键1过程beginNET_DVR_Init();NET_DVR_Cleanup();ErrorValues:=NET_DVR_GetLastError();Memo1.Lines.Add('ErrorValues:'+inttostr(ErrorValues));Memo1.Lines.Add('SDK网络通信库初始化及释放成功');end;procedure TForm1.Button2Click(Sender: TObject); //开第一路beginDVRIP:='192.168.1.101';DVRUserName:= 'admin';DVRPassWord:= '12345';NET_DVR_Init();//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);// 登陆注册设备lUserID := NET_DVR_Login_V30(PChar(DVRIP), 8000, PChar(DVRUserName), PChar(DVRPassWor d), @struDeviceInfo);Memo1.Lines.Add('lUserID:'+inttostr(lUserID));ErrorValues:=NET_DVR_GetLastError();Memo1.Lines.Add('ErrorValues:'+inttostr(ErrorValues));//通过485串口建立透明通道iSelSerialIndex := 2; //1:232串口;2:485串口lTranHandle := NET_DVR_SerialStart(lUserID, iSelSerialIndex, g_fSerialDataCallBack, dwUser); //设置回调函数获取透传数据Memo1.Lines.Add('lTranHandle:'+inttostr(lTranHandle));if (lTranHandle < 0) thenbeginMemo1.Lines.Add('NET_DVR_SerialStart error,'+inttostr(NET_DVR_GetLastError()));NET_DVR_Logout_V30(lUserID);NET_DVR_Cleanup();end;//通过485透明通道发送数据lSerialChan := 1; //使用485时该值有效,从1开始;232时设置为0szSendBuf[0] := char($03); //开第一路指令数据szSendBuf[1] := char($05);szSendBuf[2] := char($00);szSendBuf[3] := char($10);szSendBuf[4] := char($FF);szSendBuf[5] := char($00);szSendBuf[6] := char($8C);szSendBuf[7] := char($1D);szSendBuf[8] := char(#0);szSendBuf[9] := char(#0);szSendBuf[10] := char(#0);if (not NET_DVR_SerialSend(lTranHandle, lSerialChan, szSendBuf, sizeof(szSendBuf))) then//szSe ndBuf为发送数据的缓冲区beginMemo1.Lines.Add('NET_DVR_SerialSend error,'+inttostr(NET_DVR_GetLastError()));NET_DVR_SerialStop(lTranHandle);NET_DVR_Logout_V30(lUserID);NET_DVR_Cleanup();end;Memo1.Lines.Add('接受数据');Memo1.Lines.Add(#33+#33+szReciBuf[0]+szReciBuf[1]+#33);//断开透明通道NET_DVR_SerialStop(lTranHandle); //注销用户NET_DVR_Logout_V30(lUserID); //释放SDK资源NET_DVR_Cleanup();//ErrorValues:=NET_DVR_GetLastError();//Memo1.Lines.Add('ErrorValues:'+inttostr(ErrorValues));end;///修改typefSerialDataCallBack=procedure lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize :DWORD;dwUser:DWORD );stdcall;procedure g_fSerialDataCallBack(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSi ze:DWORD;dwUser:DWORD );stdcall;beginmessagedlg('回调过程!',mterror,[mbyes],0);szReciBuf[0] := pRecvDataBuffer[0];szReciBuf[1] := pRecvDataBuffer[1];szReciBuf[2] := pRecvDataBuffer[2];szReciBuf[3] := pRecvDataBuffer[3];szReciBuf[4] := pRecvDataBuffer[4];szReciBuf[5] := pRecvDataBuffer[5];szReciBuf[6] := pRecvDataBuffer[6];szReciBuf[7] := pRecvDataBuffer[7];szReciBuf[8] := pRecvDataBuffer[8];szReciBuf[9] := pRecvDataBuffer[9];szReciBuf[10] := pRecvDataBuffer[10];end;。