JAVA使用海康SDK摄像头人体目标识别模块

article/2025/6/25 23:40:24

JAVA使用海康SDK


首先到海康威视官网下载SDK

海康威视SDK

1.导入项目时候需要注意,linux环境跟windows不同的
区别如下:

public interface HCNetSDK extends Library //linux
public interface HCNetSDK extends StdCallLibrary //windows

2.初始化SDK

	public static HCNetSDK hCNetSDK;{hCNetSDK = HCNetSDK.INSTANCE;boolean b = hCNetSDK.NET_DVR_Init();if (b) {log.info("海康SDk初始化成功");} else {log.info("海康SDk初始化失败");}}

3.查看SDK调用的流程以及参考Demo(黄色部分可以在摄像头直接设置)
使用流程
4.参考示例是C语言的,我们需要对应转换成JAVA代码,首先设置一个回调函数

public class MsgCallBack_V31 implements HCNetSDK.FMSGCallBack_V31 {@Overridepublic boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {switch (lCommand) {case HCNetSDK.COMM_VCA_ALARM: // 智能检测通用报警{break;}case HCNetSDK.COMM_ISAPI_ALARM: {//图片分离模式//触发事件终端ipString terminalIp = new String(pAlarmer.sDeviceIP).trim();//写入接收结构体HCNetSDK.NET_DVR_ALARM_ISAPI_INFO strDvrAlarmIspi = new HCNetSDK.NET_DVR_ALARM_ISAPI_INFO();strDvrAlarmIspi.write();Pointer pVcaIspiInfo = strDvrAlarmIspi.getPointer();pVcaIspiInfo.write(0, pAlarmInfo.getByteArray(0, strDvrAlarmIspi.size()), 0, strDvrAlarmIspi.size());strDvrAlarmIspi.read();break;}default:System.out.println("其他报警,报警信息类型: " + lCommand);break;}return true;
}

5.开始对摄像头进行布防,废话不多说,直接上代码

@Service
public class TerminalSdkServiceImpl{public static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;//报警回调函数实现public void InitTerminal(String ip, String userName, String password, short port) {fMSFCallBack_V31 = new MsgCallBack_V31();// 初始化if(hCNetSDK == null) {hCNetSDK.NET_DVR_Init();}//建议使用图片分离模式,否则解析会内存溢出或者引发其他问题HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = new HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG();struGeneralCfg.byAlarmJsonPictureSeparate = 1;// 分离模式0不分离,1分离struGeneralCfg.write();if (!hCNetSDK.NET_DVR_SetSDKLocalCfg(17, struGeneralCfg.getPointer())) {JOptionPane.showMessageDialog(null, "NET_DVR_SetSDKLocalCfg失败");}// 设置连接时间与重连时间hCNetSDK.NET_DVR_SetConnectTime(2000, 1);hCNetSDK.NET_DVR_SetReconnect(10000, true);// 登录参数,包括设备地址、登录用户、密码等HCNetSDK.NET_DVR_USER_LOGIN_INFO struLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();// 设备IP地址struLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];System.arraycopy(ip.getBytes(), 0, struLoginInfo.sDeviceAddress, 0, ip.length());//用户名struLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];System.arraycopy(userName.getBytes(), 0, struLoginInfo.sUserName, 0, userName.length());//设备登录密码struLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];System.arraycopy(password.getBytes(), 0, struLoginInfo.sPassword, 0, password.length());struLoginInfo.bUseAsynLogin = false; // 同步登录方式struLoginInfo.wPort = port; // 设备服务端口struLoginInfo.write();// 设备信息, 输出参数HCNetSDK.NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = new HCNetSDK.NET_DVR_DEVICEINFO_V40();lUserID = hCNetSDK.NET_DVR_Login_V40(struLoginInfo, struDeviceInfoV40);if (lUserID < 0) {System.out.println("Login failed, error code: " + hCNetSDK.NET_DVR_GetLastError());hCNetSDK.NET_DVR_Cleanup();return;}else{System.out.println("设备ip:" + ip + "登录成功!");}// 设置报警回调函数hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, null);int lHandle;HCNetSDK.NET_DVR_SETUPALARM_PARAM struAlarmParam = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();struAlarmParam.dwSize = struAlarmParam.size();// 报警图片数据类型,bit1-报警类型为COMM_VCA_ALARM对应的json报警数据中图片数据长传类型,0- 二进制传输,1- URL传输struAlarmParam.byAlarmTypeURL = 1 << 1;// 其他报警布防参数不需要设置,不支持lHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, struAlarmParam);if (lHandle < 0) {System.out.println("NET_DVR_SetupAlarmChan_V41 error," + hCNetSDK.NET_DVR_GetLastError());hCNetSDK.NET_DVR_Logout(lUserID);hCNetSDK.NET_DVR_Cleanup();return;}System.out.println("设备ip:" + ip + "布防成功!");}
}

6.收工,一般情况下,不成功的原因有以下几个:
1.摄像头未打开检测功能
2.摄像头未设置规则上传功能


http://chatgpt.dhexx.cn/article/Gf7qQEyv.shtml

相关文章

PDF图片文字识别

工具 adobe acrobat XI PRO 没有安装该软件的&#xff0c;需下载安装&#xff0c;有了此软件&#xff0c;pdf随意改&#xff0c;必备&#xff01; 步骤 1.打开pdf文件&#xff0c;点击工具---文本识别---在本文件中 2.选择“所有页面”&#xff0c;点击“编辑” 3.选择语言&a…

利用Java实现的图片中文字识别,你学会了吗?

一. 背景 今天有粉丝向波哥提出了这样一个疑问&#xff1a;给出一张图片&#xff0c;如何利用Java中的技术获取图片中的文字信息&#xff1f;针对这个问题&#xff0c;你有么有解决办法呢&#xff1f;如果你没有想到好的解决思路&#xff0c;也不用怕&#xff0c;看波哥来给你…

Python利用百度AI图像识别技术识别图片

准备工作&#xff1a;在百度云控制台创建文字识别模块&#xff1b;装备几张简单的有文字的图片。 百度官方文档&#xff1a;http://ai.baidu.com/docs#/OCR-API/7e4792c7 然后进入编码阶段&#xff1a; 如下代码获取access_token client_id和client_secret是百度云列表提供…

java做图文识别

现在的世界&#xff0c;什么都需要人工智能AI进行处理&#xff0c;那么&#xff0c;对于Java程序猿来说&#xff0c;是不是有些工作是不是就不能胜任呢&#xff0c;答案是显然是不一定的&#xff0c;对于图片识别来说&#xff0c;这个任务就可以使用Java进行开发&#xff0c;虽…

【计算机视觉】人脸识别--人脸识别技术综述

https://www.cnblogs.com/huty/p/8517691.html &#xfeff;参考&#xff1a;http://www.xuehuile.com/thesis/9a81f680054441ad907934b07b465c8e.html&#xff0c;本文做了相关修改。 1 人脸识别技术概述 近年来&#xff0c;随着计算机技术的迅速发展&#xff0c;人脸自动识…

厉害了,用 Java 也能实现图片识别!

点击上方蓝色“终端研发部”&#xff0c;选择“设为星标” 学最好的别人&#xff0c;做最好的我们 最近闲来无事研究了一下用 Java 如何模拟浏览器的行为&#xff0c;在实验登录的步骤时碰到了识别验证码的问题&#xff0c;于是在网上查找了关于 Java 如何进行图片识别验证码&a…

图片验证码识别教程技术原理分析

面对技术这片大海&#xff0c;我们都是一个渔民&#xff0c;三天打鱼&#xff0c;两天结网。我是把过去自己所掌握的所有技术总结成一张网&#xff0c;若一个技术干货分享的东西离我的网还太远&#xff0c;我就会放弃去了解。因为如果不能连结到这张网中&#xff0c;形成一个节…

Java OCR tess4j 图片识别技术(三)

先贴代码段 tess4j整个的代码调用到时是蛮简单的。 1.先去官网下载&#xff1a;http://tess4j.sourceforge.net/ 我的是Tess4J-3.4.0版&#xff0c;目录如下: 2.新建项目&#xff0c;将lib,tessdata,src复制到新建的项目中 3.将lib下的jar包加到build path 中 项目目录…

Java图像识别技术:Test4J

简介 做图像识别&#xff0c;可以使用TESSERACT-OCR来实现&#xff0c;但是该方式需要下载软件&#xff0c;在电脑上安装环境&#xff0c;移植性不高&#xff0c;使用Tess4J只需要下载相关Jar包&#xff0c;导入项目&#xff0c;再把项目封装好就可以处处运行了。 Test4J官网&…

计算机识别图像的原理,什么是图像识别技术?图像识别技术原理介绍

图像识别技术是人工智能的一个重要领域。它是指对图像进行对象识别,以识别各种不同模式的目标和对像的技术。 图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。图像识别,顾名思义,就是对图像做出各种处理、分析,最终识别我们所要研究的目标。今天所…

图片识别——需求篇

最近由于工作的关系,学习了一些关于图片识别的知识,并成功用于解决实际问题当中,特此一一记录下来,以备后用,同时希望对大家有用。 场景 企业端用户在注册时,会上传一下公司的Logo。上传的步骤是:选择本地Logo图片,点上传,图片被上传至公司图片服务器(此时这张图片有…

Ubuntu重启黑屏——Intel微码更新兼容性问题

9月13日前后对Ubuntu 22.04进行软件更新&#xff0c;再开机后经过grub直接黑屏&#xff0c;没有任何报错信息。 对于默认不显示Grub菜单的机器&#xff0c;可以在闪过紫屏前长按Esc进入Grub菜单。由于此时仍能进入Grub菜单界面&#xff0c;此处优先选择使用自带的Recovery Mod…

华为-微码开发入门 - 环境搭建

搭建环境 安装 Node.js 前言&#xff1a; We码的整个开发依赖 Node.js 环境&#xff0c;我们需要对 Node.js 做一个简单的了解。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;类似Java的JRE&#xff0c;JRE有一个称为Java Virtual Machine&#xff08…

Brocade FC微码升级

一、组网图 无 二、问题描述 在实际生产环境下,不少项目都存在着 Brocade FC 交换机 Firmware 版本过旧的问题&#xff0c;需要将 Firmware 版本升级至新版本。 三、过程分析 具体升级流程: 四、解决方法 1.搭建FTP环境 搭建FTP环境可以下载3cdaemon-ftp的免安装版小工具…

IBM X3550 m4 微码升级

Ibm pc server升级顺序为IMM->UEFI->DSA(->FPGA) 微码下载 进入IBM官网->支持->fix central 选择升级设备对应的微码或补丁 PCserver 微码升级先升级IMM 选择IMM 选择最新版下载&#xff0c;升级测试本机IMM版本为1.50 最新6.60&#xff0c;时间相隔六年多&am…

微信小程序生成二微码(JAVA)

前段时间在项目中&#xff0c;写了一个生成微信二微码的功能&#xff0c;之所以会开发这个功能&#xff0c;是因为我们做的小程序要进行推广让用户扫我们做的小程序的二微码进行去体验&#xff0c;功能实现的场景大概是&#xff1a; 后台生成小程序二微码,返回到后台页面进行展…

联想SR850系列微码升级

1. 通过服务器管理口&#xff08;X-clarity controller&#xff09;收集日志.方法是使用直连线(此网口可自适应 连接方式)将此网口连接于一台终端机(笔记本或台式机). 2. .将笔记本的网卡 IP 设置为与“192.168.70.125”处于同网段的 IP&#xff08;如&#xff1a; 192.168.70.…

IBM V7000存储升级微码

一、前期准备 目前使用的V7000型号为2076-124,没有扩展柜,当前版本为6.4.1.4,比较老旧,需要升级到相对新的版本。 1.确定当前机器可升级的最高版本 打开网页 http://www-01.ibm.com/support/docview.wss?rs=591&uid=ssg1S1003850 ,可以看到下表,可以看到2076-124这个…

hpux-hp superdome 9000 升级微码

新加入cell板&#xff0c;查看、升级CELL板微码。 一.查看主机微码 升级xyy主机&#xff0c;用Lan console连接到MP卡中&#xff0c;进入Command Menu菜单中&#xff0c;执行命令sysrev检查当前所插的CELL板微码 可以看出&#xff0c;当前5块CELL板安装在0、2、3、4、6槽位&am…

linux下查看硬盘微码,什么是固件或微码,以及如何更新我的硬件?

固件是一种运行在硬件设备上的软件&#xff0c;用于执行低级任务。 例如&#xff0c;从电视遥控器到电脑硬盘驱动器到空中Drone的所有内容都运行自己的固件。 微码基本上是你的CPU的固件。 什么是固件&#xff1f; 软件是指在设备上运行的程序&#xff0c;应用程序和其他计算机…