海康SDK 通过java接口设置和获取摄像机参数

 以下功能实现需要完成设备初始化,注册,监听和布防的操作,详见CSDNhttps://mp.csdn.net/mp_blog/creation/editor/121543529

海康设备登录 

 //设备登录_V40
    public void Login_V40() {
        //注册
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
        String m_sDeviceIP = "10.17.36.27";//设备ip地址
        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
        String m_sUsername = "admin";//设备用户名
        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
        String m_sPassword = "hik12345";//设备密码
        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
        m_strLoginInfo.wPort = 8000;
        m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
        m_strLoginInfo.write();
        lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (lUserID == -1) {
            System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
            return;
        } else {
            System.out.println("登录成功!");
        }
    }

 海康端口绑定


public void BindPort() {
    HCNetSDK.NET_DVR_LOCAL_TCP_PORT_BIND_CFG strLocalTcpBind = new HCNetSDK.NET_DVR_LOCAL_TCP_PORT_BIND_CFG();
    strLocalTcpBind.read();
    strLocalTcpBind.wLocalBindTcpMinPort = 30000;
    strLocalTcpBind.wLocalBindTcpMaxPort = 30200;
    strLocalTcpBind.write();
    Pointer pStrLocalTcoBind = strLocalTcpBind.getPointer();
    if (hCNetSDK.NET_DVR_SetSDKLocalCfg(0, pStrLocalTcoBind) == false) {
        System.out.println("绑定失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
    }
    System.out.println("绑定成功");
}

海康获取设备的基本参数 

//获取设备的基本参数
    public void GetCfg() {
        HCNetSDK.NET_DVR_DEVICECFG_V40 m_strDeviceCfg = new HCNetSDK.NET_DVR_DEVICECFG_V40();
        m_strDeviceCfg.dwSize = m_strDeviceCfg.size();
        m_strDeviceCfg.write();
        Pointer pStrDeviceCfg = m_strDeviceCfg.getPointer();
        IntByReference pInt = new IntByReference(0);
        boolean b_GetCfg = hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_DEVICECFG_V40,
                0Xffffffff, pStrDeviceCfg, m_strDeviceCfg.dwSize, pInt);
        if (b_GetCfg == false) {
            System.out.println("获取参数失败  错误码:" + hCNetSDK.NET_DVR_GetLastError());
        }
        System.out.println("获取参数成功");
        m_strDeviceCfg.read();
        System.out.println("设备名称:" + new String(m_strDeviceCfg.sDVRName).trim() + "设备序列号:" + new String(m_strDeviceCfg.sSerialNumber));
        System.out.println("模拟通道个数" + m_strDeviceCfg.byChanNum);
    }

海康球机PTZ参数获取设置


    public void SetPTZcfg()
    {
        HCNetSDK.NET_DVR_PTZPOS struPtTZPos=new HCNetSDK.NET_DVR_PTZPOS();
        IntByReference pUsers=new IntByReference(1);
        boolean b_GetPTZ=hCNetSDK.NET_DVR_GetDVRConfig(lUserID,HCNetSDK.NET_DVR_GET_PTZPOS,1,struPtTZPos.getPointer(),struPtTZPos.size(),pUsers);
        if (b_GetPTZ==false){
            System.out.println("获取PTZ坐标信息失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
        }else {
            struPtTZPos.read();
            String p=Integer.toHexString(struPtTZPos.wPanPos);
            String t=Integer.toHexString(struPtTZPos.wTiltPos);
            String z=Integer.toHexString(struPtTZPos.wZoomPos);
            System.out.println("P参数:"+p+"\n");
            System.out.println("T参数:"+t+"\n");
            System.out.println("Z参数:"+z+"\n");
        }

海康设置前端参数 


    public void CAMERAPARAMCFG()
    {

        HCNetSDK.NET_DVR_CAMERAPARAMCFG_EX struCameraParam=new HCNetSDK.NET_DVR_CAMERAPARAMCFG_EX();

        Pointer pstruCameraParam=struCameraParam.getPointer();
        IntByReference ibrBytesReturned = new IntByReference(0);
        boolean b_GetCameraParam=hCNetSDK.NET_DVR_GetDVRConfig(lUserID,3368,1,pstruCameraParam,struCameraParam.size(),ibrBytesReturned);
        if (!b_GetCameraParam) {
            System.out.println("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
        }
        struCameraParam.read();
        System.out.println("是否开启旋转:"+struCameraParam.struCorridorMode.byEnableCorridorMode);

        struCameraParam.struCorridorMode.byEnableCorridorMode=1;
        struCameraParam.write();
        boolean b_SetCameraParam=hCNetSDK.NET_DVR_SetDVRConfig(lUserID,3369,1,pstruCameraParam,struCameraParam.size());
        if (!b_SetCameraParam) {
            System.out.println("设置前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
        }

        struCameraParam.read();
        System.out.println("设置成功");
    }

海康获取快球聚焦模式信息。

public  void GetFocusMode()
{
    HCNetSDK.NET_DVR_FOCUSMODE_CFG struFocusMode = new HCNetSDK.NET_DVR_FOCUSMODE_CFG();
    struFocusMode.read();
    struFocusMode.dwSize=struFocusMode.size();
    struFocusMode.write();
    Pointer pFocusMode=struFocusMode.getPointer();
    IntByReference ibrBytesReturned = new IntByReference(0);
    boolean b_GetCameraParam=hCNetSDK.NET_DVR_GetDVRConfig(lUserID,3305,1,pFocusMode,struFocusMode.size(),ibrBytesReturned);
    if (!b_GetCameraParam) {
        System.out.println("获取快球聚焦模式失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
    }
    struFocusMode.read();
    System.out.println("聚焦模式:"+struFocusMode.byFocusMode);

    struFocusMode.byFocusMode=0;
    struFocusMode.byFocusDefinitionDisplay=1;
    struFocusMode.byFocusSpeedLevel=3;
    struFocusMode.write();
    boolean b_SetCameraParam=hCNetSDK.NET_DVR_SetDVRConfig(lUserID,3306,1,pFocusMode,struFocusMode.size());
    if (!b_SetCameraParam) {
        System.out.println("设置快球聚焦模式失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
    }

    struFocusMode.read();
    System.out.println("设置成功");



}

海康获取IP通道 


    public void GetIPPARACFG()
    {   IntByReference ibrBytesReturned = new IntByReference(0);//获取IP接入配置参数
        HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40();
        m_strIpparaCfg.write();
        //lpIpParaConfig 接收数据的缓冲指针
        Pointer lpIpParaConfig = m_strIpparaCfg.getPointer();
        boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned);
        m_strIpparaCfg.read();
        System.out.println("其实数字通道号:"+m_strIpparaCfg.dwStartDChan);

    }

人脸、车辆抓拍功能详见

海康威视设备 JAVA SDK SpringBoot实现人脸、车辆、门禁图片抓取_灵活的硕硕的博客-CSDN博客实现设备抓拍功能之前,需要完成设备初始化,注册,监听和布防的操作,详见CSDNhttps://mp.csdn.net/mp_blog/creation/editor/121543529创建类FMSGCallBack_V30 并实现FMSGCallBackpublic class FMSGCallBack_V30 implements HCNetSDK.FMSGCallBack {实现抽象方法 @Override public void invoke(int lComm.https://blog.csdn.net/qq_24981615/article/details/123060744

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 通过Java可以使用海康SDK获取入侵报警抓拍图片。具体步骤如下: 1. 首先,需要导入海康SDKJava开发包,并配置相关环境。 2. 创建SDK的连接并登录到设备上。可以使用SDK提供的方法进行设备连接和登录,需要提供设备的IP地址、端口号、用户名和密码。 3. 获取设备历史报警信息。使用SDK提供的方法获取设备的历史报警信息列表,可以通过设置查询条件来获取入侵报警类型的信息。 4. 遍历历史报警信息列表,找到入侵报警的记录。 5. 获取入侵报警的抓拍图片。使用SDK提供的方法,根据入侵报警记录的时间点和设备信息,获取对应的抓拍图片。 6. 将抓拍图片保存到本地或者进行其他处理。可以使用Java的文件操作相关方法,将获取到的图片保存到本地指定的路径上,或者进行其他处理操作。 7. 关闭连接并释放资源。在获取完图片后,需要关闭与设备的连接,并释放相关资源,避免资源泄露或者连接占用。 通过以上步骤,我们可以通过Java代码调用海康SDK,实现获取入侵报警抓拍图片的功能。在具体实施时,需要根据海康SDK提供的具体方法和参数进行编程,并严格按照SDK文档进行操作。同时,需要注意异常处理和资源释放,以确保系统的稳定性和安全性。 ### 回答2: Java通过海康SDK获取入侵报警抓拍图片可以通过以下步骤实现: 1. 下载并安装海康SDK:首先需要从海康官网下载安装海康SDK,然后按照官方文档进行安装和配置。确保SDK的配置正确。 2. 创建Java项目:在IDE中创建一个新的Java项目,并将海康SDK的相关jar文件添加到项目的类路径中。 3. 导入SDKJava类库:在Java项目中,使用import语句导入SDK所提供的相关类库,以便在代码中使用SDK的功能。 4. 初始化SDK:在代码中使用SDK提供的初始化方法来初始化SDK的连接。 5. 登录设备:使用SDK提供的登录方法,输入设备的IP地址、用户名和密码来登录到设备上。 6. 设置报警回调:使用SDK提供的方法设置报警回调函数,该函数会在接收到报警信息时自动触发。 7. 接收报警信息:报警回调函数可以获取到报警的相关信息,包括抓拍的图片等。 8. 获取抓拍图片:从报警信息中获取到图片的路径或URL,使用SDK提供的方法将图片保存到本地或进行其他处理。 9. 关闭连接:使用SDK提供的关闭连接方法来关闭与设备的连接。 需要注意的是,上述步骤中的具体代码实现会根据所使用的海康SDK版本和具体需求有所不同,因此在实际操作中应该参考海康SDK的官方文档和示例代码进行开发。同时,还需要了解设备的网络配置、设备支持的功能以及报警回调的参数和返回值等相关信息,以确保代码的正确性和可靠性。 ### 回答3: Java通过海康SDK获取入侵报警抓拍图片的步骤如下: 1. 首先,需要从海康官网下载并安装好海康SDK,确保能够成功连接到海康设备。 2. 在Java项目中引入海康SDK的依赖文件,通常是将SDK提供的jar包添加到项目的classpath中。 3. 在代码中配置SDK连接参数,包括设备的IP地址、端口号、用户名和密码等信息。可以使用SDK提供的类进行初始化并建立连接。 4. 在连接成功后,通过SDK提供的方法找到指定设备上的摄像头,通常使用设备的通道号来确定。 5. 在找到摄像头后,可以使用SDK提供的方法设置入侵报警的相关参数,如检测区域、报警类型等。 6. 开启入侵报警功能,使用SDK提供的方法让设备开始监测入侵报警。 7. 当设备检测到入侵报警时,SDK会发送相应的通知。可以通过SDK提供的回调函数来处理这些通知,一旦接收到入侵报警的通知,就可以执行相应的操作。 8. 在处理入侵报警的回调函数中,使用SDK提供的方法获取抓拍的图片。可以指定抓拍的触发条件和保存路径等参数。 9. 获取到抓拍的图片后,可以进一步处理、保存或进行其他操作。在Java中可以使用图像处理库如OpenCV来对图片进行处理和分析。 10. 最后,关闭连接和释放资源,使用SDK提供的方法结束与设备的通信。 通过上述步骤,就可以使用Java通过海康SDK获取入侵报警抓拍图片了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值