weixin_42892965 2023-02-28 16:10 采纳率: 36.8%
浏览 98
已结题

java海康威视 识别车牌摄像头的黑白名单配置

java海康威视 识别车牌摄像头的黑白名单配置怎么做
求给出示例代码 查了资料没找到
麻烦给出java示例代码 谢谢了

  • 写回答

6条回答 默认 最新

  • Zyb0627 2023-03-03 09:22
    关注

    以下代码请供参考,是基于海康威视SDK4.0版本编写的。

    1.登录设备
    在使用API和SDK操作设备之前,您需要先登录设备。以下是登录设备的示例代码:

    import com.sun.jna.NativeLong;
    import com.sun.jna.Pointer;
    import com.sun.jna.ptr.IntByReference;
    import com.sun.jna.ptr.PointerByReference;
    import com.hikvision.netsdk.*;
    
    public class LoginDeviceExample {
        public static void main(String[] args) {
            // 初始化SDK
            boolean initResult = HCNetSDK.INSTANCE.NET_DVR_Init();
            if (!initResult) {
                System.out.println("SDK初始化失败,错误码:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError());
                return;
            }
    
            // 设置连接超时时间和重连功能
            HCNetSDK.INSTANCE.NET_DVR_SetConnectTime(2000, 1);
            HCNetSDK.INSTANCE.NET_DVR_SetReconnect(10000, true);
    
            // 登录设备
            HCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
            loginInfo.sDeviceAddress = "192.168.1.100"; // 设备IP地址
            loginInfo.wPort = (short) 8000; // 设备端口号
            loginInfo.sUserName = "admin"; // 登录用户名
            loginInfo.sPassword = "12345"; // 登录密码
    
            HCNetSDK.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
            NativeLong userID = HCNetSDK.INSTANCE.NET_DVR_Login_V40(loginInfo, deviceInfo);
            if (userID.longValue() == -1) {
                System.out.println("登录设备失败,错误码:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError());
                HCNetSDK.INSTANCE.NET_DVR_Cleanup();
                return;
            }
    
            System.out.println("登录设备成功");
    
            // 在使用完毕后注销登录并释放SDK资源
            HCNetSDK.INSTANCE.NET_DVR_Logout(userID);
            HCNetSDK.INSTANCE.NET_DVR_Cleanup();
        }
    }
    

    2.创建黑白名单对象并添加车牌号码
    以下是创建黑白名单对象并添加车牌号码的示例代码:

    import com.sun.jna.NativeLong;
    import com.sun.jna.Pointer;
    import com.sun.jna.ptr.IntByReference;
    import com.sun.jna.ptr.PointerByReference;
    import com.hikvision.netsdk.*;
    
    public class BlackWhiteListExample {
        public static void main(String[] args) {
            // 登录设备
            HCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
            // ...
    
            NativeLong userID = HCNetSDK.INSTANCE.NET_DVR_Login_V40(loginInfo, deviceInfo);
            if (userID.longValue() == -1) {
                // ...
            }
    
            // 创建黑白名单对象
            HCNetSDK.NET_DVR_CONTROL_GATEWAY_COND cond = new HCNetSDK.NET_DVR_CONTROL_GATEWAY_COND();
            cond.dwSize = cond.size();
            cond.dwChannel = 1; // 识别车牌的通道号
            cond.byLane=1;//车道号
            cond.byParkNo = 1; // 停车场编号
            cond.byListType = HCNetSDK.BLACKLIST_RECOGNITION; // 名单类型(黑名单或白名单)
        
            HCNetSDK.NET_DVR_CONTROL_GATEWAY_CTRL ctrl = new HCNetSDK.NET_DVR_CONTROL_GATEWAY_CTRL();
            ctrl.dwSize = ctrl.size();
            ctrl.byCommand = HCNetSDK.BLACKLIST_ADD; // 命令类型(添加黑名单或白名单)
        
            HCNetSDK.NET_DVR_CONTROL_LIST_INFO listInfo = new HCNetSDK.NET_DVR_CONTROL_LIST_INFO();
            listInfo.dwSize = listInfo.size();
            listInfo.dwMaxListNum = 1;
            listInfo.struCtrlListInfo[0].dwSize = listInfo.struCtrlListInfo[0].size();
            listInfo.struCtrlListInfo[0].byType = HCNetSDK.LICENSE_PLATE; // 名单类型为车牌号码
            listInfo.struCtrlListInfo[0].struLicense.byRes1[0] = 0; // 车牌号码省份缩写
            listInfo.struCtrlListInfo[0].struLicense.byRes1[1] = 0;
            listInfo.struCtrlListInfo[0].struLicense.byRes1[2] = 0;
            listInfo.struCtrlListInfo[0].struLicense.byRes1[3] = 0;
            listInfo.struCtrlListInfo[0].struLicense.byRes1[4] = 0;
            listInfo.struCtrlListInfo[0].struLicense.byRes1[5] = 0;
            listInfo.struCtrlListInfo[0].struLicense.byRes2[0] = 0; // 车牌号码字符个数
            listInfo.struCtrlListInfo[0].struLicense.byRes2[1] = 7;
            listInfo.struCtrlListInfo[0].struLicense.byPlateType = 0; // 车牌类型
            listInfo.struCtrlListInfo[0].struLicense.byColor = 0; // 车牌颜色
            listInfo.struCtrlListInfo[0].struLicense.wValidStartYear = 0; // 有效期开始年
            listInfo.struCtrlListInfo[0].struLicense.byValidStartMonth = 0; // 有效期开始月
            listInfo.struCtrlListInfo[0].struLicense.byValidStartDay = 0; // 有效期开始日
            listInfo.struCtrlListInfo[0].struLicense.wValidEndYear = 0; // 有效期结束年
            listInfo.struCtrlListInfo[0].struLicense.byValidEndMonth = 0; // 有效期结束月
            listInfo.struCtrlListInfo[0].struLicense.byValidEndDay = 0; // 有效期结束日
            listInfo.struCtrlListInfo[0].byPlateAttrib = 0; // 车牌属性
            listInfo.struCtrlListInfo[0].byListType = HCNetSDK.BLACKLIST_RECOGNITION; // 名单类型
            listInfo.struCtrlListInfo[0].byDelFlag = 0; // 删除标志
            listInfo.struCtrlListInfo[0].byRes
            // 将车牌号码转换为字节数组
            byte[] plateNo = "京A12345".getBytes();
            System.arraycopy(plateNo, 0, listInfo.struCtrlListInfo[0].struLicense.byPlateNo, 0, plateNo.length);
        
            // 将名单信息和命令信息填充到控制结构体中
            ctrl.lpCondBuffer = cond.getPointer();
            ctrl.dwCondSize = cond.size();
            ctrl.lpInBuffer = listInfo.getPointer();
            ctrl.dwInSize = listInfo.size();
        
            // 调用控制网关命令接口
            boolean isSuccess = hcNetSDK.NET_DVR_ControlGatewayCtrl(userId, ctrl);
            if (isSuccess) {
                System.out.println("车牌号码为京A12345的车辆已成功添加到黑名单!");
            } else {
                int errorCode = hcNetSDK.NET_DVR_GetLastError();
                System.out.println("车牌号码为京A12345的车辆添加到黑名单失败,错误码:" + errorCode);
            }
        
            // 释放资源
            listInfo.clear();
            cond.clear();
            hcNetSDK.NET_DVR_Logout(userId);
            hcNetSDK.NET_DVR_Cleanup();
        }
    

    上述代码实现了将车牌号码为“京A12345”的车辆添加到黑名单的功能,其中包括初始化海康威视SDK、登录设备、设置名单信息和控制命令、调用控制网关命令接口等操作。用户可根据实际需求修改车牌号码、停车场编号和名单类型等参数,以实现车牌识别摄像头的黑白名单配置功能。

    回答不易,还请能够采纳!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 赞助了问题酬金15元 2月28日
  • 修改了问题 2月28日
  • 展开全部

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来