海康大华宇视SDK车牌号开发主要方法

一个控制台程序的pro内容,功能:使用海康、大华、宇视的SDK进行车牌号获取开发,其包含了SDK外部库的添加。
pro文件内容:

QT -= gui
QT += xml core network serialport
CONFIG += c++14 console
DEFINES += KERNEL_LIBRARY QT_MESSAGELOGCONTEXT
CONFIG -= app_bundle
DEFINES += QT_DEPRECATED_WARNINGS



SOURCES += \
        cardetectorparams.cpp \
        configparams.cpp \
        dahuacameramanager.cpp \
        dahuacamgetcarnumber.cpp \
        hikoncameramanager.cpp \
        hikoncamgetcarnumber.cpp \
        main.cpp \
        serviceCarNumberCaptureGlobal.cpp \
        servicefun_dahua_sdkapi_getcarnumber.cpp \
        servicefun_hikon_sdkapi_getcarnumber.cpp \
        servicefun_udpnetwork_forcarnumber.cpp \
        servicefun_uv_sdkapi_getcarnumber.cpp \
        uvcameramanager.cpp \
        uvcamgetcarnumber.cpp
TRANSLATIONS += \
    DHCarNumCapConsole_zh_CN.ts
qnx: target.path = /tmp/$${
   
   TARGET}/bin
else: unix:!android: target.path = /opt/$${
   
   TARGET}/bin
!isEmpty(target.path): INSTALLS += target

HEADERS += \
    cardetectorparams.h \
    configparams.h \
    dahuacameramanager.h \
    dahuacamgetcarnumber.h \
    hikoncameramanager.h \
    hikoncamgetcarnumber.h \
    kernel_global.h \
    serviceCarNumberCaptureGlobal.h \
    servicefun_dahua_sdkapi_getcarnumber.h \
    servicefun_hikon_sdkapi_getcarnumber.h \
    servicefun_udpnetwork_forcarnumber.h \
    servicefun_uv_sdkapi_getcarnumber.h \
    uvcameramanager.h \
    uvcamgetcarnumber.h

#64位
#大华
LIBS += "D:/DHCarNumCapConsole/dhsdkwin64_is_v3.057/Lib/Win64/dhnetsdk.lib"
INCLUDEPATH += "D:/DHCarNumCapConsole/dhsdkwin64_is_v3.057/Include/Common"
DEPENDPATH += "D:/DHCarNumCapConsole/dhsdkwin64_is_v3.057/Include/Common"

#海康
LIBS += "D:/DHCarNumCapConsole/CH-HCNetSDKV6.1.9.48_build20230410_win64/Lib/HCNetSDK.lib"
INCLUDEPATH += "D:/DHCarNumCapConsole/CH-HCNetSDKV6.1.9.48_build20230410_win64/Include"
DEPENDPATH += "D:/DHCarNumCapConsole/CH-HCNetSDKV6.1.9.48_build20230410_win64/Include"





#宇视
LIBS += "D:/DHCarNumCapConsole/ITSSDK-B0303.164.2.0.220511_UV/dll/lib/NetDEVSDK.lib"
INCLUDEPATH += "D:/DHCarNumCapConsole/ITSSDK-B0303.164.2.0.220511_UV/dll/include"
DEPENDPATH += "D:/DHCarNumCapConsole/ITSSDK-B0303.164.2.0.220511_UV/dll/include"

DISTFILES += \
    使用和开发说明.txt``

二、海康SDK绑定摄像头

bool HikonCamGetCarNumber::bindHkCamSDK(QString ip,QString username,QString password,int relationNumber,QString servicePort)
{
   
   
    //接收到的是一个指令结构,是否过期在run()方法中已经进行了判断,过期的不会发过来,所以这里只需要把这个结构传给车牌号抓取程序即可
    //此处调用海康抓取车牌号的程序,在回调函数中把获取到的车牌号按照方向车道,累加到road_car_number这结构中。等待run()方法中发送


    //---------------------------------------
    //初始化
    BOOL result=NET_DVR_Init();
    if(!result){
   
   
        return false;
    }
    NET_DVR_SetLogToFile(3,(char *)std::string("../log").c_str(),false);

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //注册设备

    //登录参数,包括设备地址、登录用户、密码等
    LONG lUserID = -1; //初始化lUserID
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {
   
   0};//创建一个数据结构对象并为每个属性赋初值为0
    struLoginInfo.bUseAsynLogin = 0; //设置为同步登录方式
    strcpy(struLoginInfo.sDeviceAddress,ip.toStdString().c_str()); //设置设备IP地址为192.168.2.184(大门口海康能够获取车牌号的摄像头的IP)
    struLoginInfo.wPort = servicePort.toInt(); //设置服务端口默认值为8000
    strcpy(struLoginInfo.sUserName, username.toStdString().c_str()); //设置:用户名
    strcpy(struLoginInfo.sPassword, password.toStdString().c_str()); //设置:密码


    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {
   
   0};//创建一个V40数据结构对象

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);//登录注册并将设备信息存储在struDeviceInfoV40结构中
    if (lUserID < 0)
    {
   
   
        //登录失败时提示错误信息
        qDebug("HK Login fail!");
        return false;
    }else{
   
   
        qDebug("HK Login success!");
    }


    //---------------------------------------
    //报警布防
    //设置报警回调函数
    NET_DVR_SetDVRMessageCallBack_V31(MSesGCallback, NULL);
    //启用布防
    NET_DVR_SETUPALARM_PARAM struSetupParam={
   
   0};//创建布防结构对象并初始化为0
    struSetupParam.dwSize=sizeof(NET_DVR_SETUPALARM_PARAM);//根据NET_DVR_SETUPALARM_PARAM的大小来设置dwSize的值
    struSetupParam.byLevel = 1; //布防优先级:0- 一等级(高),1- 二等级(中),2-多设备布防,即允许同一时间多个设备同时布防
    struSetupParam.byAlarmInfoType = 1; //上传报警信息类型: 0- 老报警信息(NET_DVR_PLATE_RESULT), 1- 新报警信息(NET_ITS_PLATE_RESULT)

    LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID,&struSetupParam);//开始布防并设置回调函数
    //如果lHandle<0则布防失败,然后出登出并清除
    if (lHandle < 0)
    {
   
   
        qDebug("HK setAlarm fail");
        NET_DVR_Logout(lUserID);
        return false;
    }
    qDebug("HK Set Alarm Success!");
    qDebug()<<"ip:"<<ip;
    //---------------------------------------
    //网络触发抓拍

    NET_DVR_SNAPCFG struSnapCfg;
    memset(&struSnapCfg, 0, sizeof(NET_DVR_SNAPCFG));

    //结构体大小
    struSnapCfg.dwSize = sizeof(NET_DVR_SNAPCFG);

    //线圈抓拍次数,0-不抓拍,非0-连拍次数,目前最大5次
    struSnapCfg.bySnapTimes  = 0;

    //抓拍等待时间,单位ms,取值范围[0,60000]
    struSnapCfg.wSnapWaitTime   = 1;//1000

    //连拍间隔时间,单位ms,取值范围[67,60000]
    struSnapCfg.wIntervalTime[0]  = 67;//1000
    struSnapCfg.wIntervalTime[1]  = 67;//1000

    //触发IO关联的车道号
   
<think>好的,用户现在在寻找关于海康大华股份的车牌识别系统的Python实现或教程,以及相关的API信息。首先,我需要确认这两家公司是否提供公开的API,特别是针对车牌识别的。海康大华作为安防领域的龙头企业,他们的产品通常面向企业客户,可能需要商业合作才能获取API权限。 接下来,我应该回忆一下他们的开发者平台情况。海康有iVMS-8700平台,大华则有DHOP平台,这些平台通常需要企业账号注册,并且可能涉及申请API密钥的流程。用户可能需要先注册账号,然后才能查阅相关文档和SDK。 然后,关于Python的实现,通常这些公司可能会提供RESTful API或者SDK,Python可以通过HTTP请求调用REST API,或者使用他们提供的Python SDK。如果用户没有现成的教程,可能需要参考官方文档,自己编写代码示例。 另外,还需要考虑用户可能遇到的困难,比如认证方式(如Token获取)、API调用的参数设置、返回数据的解析等。这些在教程中可能需要详细说明。同时,可能还需要提到第三方库如requests在调用API时的应用。 用户的问题中还提到了“教程”,所以可能需要推荐一些现有的资源,比如官方文档链接、优快云上的相关博客,或者GitHub上的开源项目。但要注意,有些资源可能需要权限或购买服务后才能访问。 此外,可能需要提醒用户注意法律和隐私问题,车牌识别涉及敏感信息,确保在使用API时符合相关法规。同时,建议用户联系官方支持获取最新的技术支持和SDK更新。 最后,生成相关问题时要围绕API申请、Python调用示例、功能对比、问题排查等方面,帮助用户进一步探索解决方案。</think>关于海康大华股份车牌识别系统的Python实现,以下是分步骤说明: ### 一、开发前准备 1. **企业认证** 需通过海康iVMS-8700开放平台([官网](https://open.hikvision.com/))或大华DHOP平台([官网](https://open.dahuatech.com/))完成企业账号注册,个人开发者可能无法直接申请[^1] 2. **API权限申请** 在控制台中创建「智能交通」类应用,勾选「车牌识别」服务模块,需提交企业资质证明并通过审核 ### 二、Python调用示例(以海康REST API为例) ```python import requests import base64 # 1.获取访问令牌 auth_url = "https://api.hik-cloud.com/oauth/token" headers = {"Content-Type": "application/json"} data = { "client_id": "您的客户端ID", "client_secret": "您的密钥", "grant_type": "client_credentials" } token = requests.post(auth_url, json=data).json()['access_token'] # 2.执行车牌识别 recog_url = "https://api.hik-cloud.com/api/v1/vehicle/recognition" with open("car.jpg", "rb") as f: img_base64 = base64.b64encode(f.read()).decode() payload = { "image": img_base64, "features": ["plate_num"] } headers = {"Authorization": f"Bearer {token}"} response = requests.post(recog_url, json=payload, headers=headers) print(response.json()) # 输出识别结果 ``` ### 三、核心参数说明 | 参数 | 海康 | 大华股份 | |------|----------|----------| | 图像格式 | base64/URL | base64/Binary | | 并发限制 | 默认10QPS | 需购买服务包 | | 特殊功能 | 车牌颜色识别 | 双层车牌识别 | ### 四、常见问题解决方案 1. **401未授权错误** 检查Token有效期(通常2小时),需实现自动续期机制 2. **识别率低** - 确保图像分辨率≥1280x720 - 车牌区域占比建议在1/6到1/3画面比例 - 使用图像预处理: ```python from PIL import ImageEnhance def preprocess(img_path): img = Image.open(img_path) # 对比度增强 enhancer = ImageEnhance.Contrast(img) img = enhancer.enhance(1.5) # 锐化处理 img = img.filter(ImageFilter.SHARPEN) return img ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值