zoukankan      html  css  js  c++  java
  • 海康摄像头的二次开发(java)

    海康摄像头的二次开发(java)

    我第一次接触海康摄像头的二次开发的项目,一开始的时候摸不清套路,走了不少弯路,现在准备把我的一些经验留下来,让大家参考一下。
    1、首先到海康的官网下载设备网络SDK:http://www.hikvision.com/cn/download_61.html,下载的时候注意版本号;
    2、然后将下载的文件解压后,可以看到Demo示例、库文件、头文件和开发文档以及一个说明文本(注意:txt文档一定要仔细看,拷贝文件也不要出错,要不然后期做项目容易出现错误还不好找);
    3、这是我自己写的一个很简陋的项目,如有需要可以去下载:http://download.csdn.net/download/u012492535/10045386,虽然简陋了一点,但是功能还是可以实现的(^▽^);
    4、我们做海康的项目之前肯定会先看到这张流程图,里面的虚线部分是可选的,就是可以不必管,只看实线框部分的即可。
    海康流程

    我们按照他的流程往下看:

    1、初始化设备SDK,对整个网络设备的初始化、内存分配等操作。
    代码如下:

    HCNetSDK sdk = HCNetSDK.INSTANCE; 
    sdk.NET_DVR_Init();//返回booleaan值

    2、注册设备,实现用户的注册功能,注册成功后,返回的用户ID 作为其他功能操作的唯一标识。
    代码如下:

    NativeLong user = new NativeLong(-1);// 注册设备
    NET_DVR_DEVICEINFO_V30 devinfo = new NET_DVR_DEVICEINFO_V30();
    user = sdk.NET_DVR_Login_V30(ipAddress, (short) port, userName,password, devinfo);//返回一个用户编号

    3、设备工作状态的获取(参数配置):
    代码如下:

    NET_DVR_DEVICEINFO_V30 devinfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();// 设备信息
    IntByReference ibrBytesReturned = new IntByReference(0);// 获取IP接入配置参数
    NET_DVR_CAMERAPARAMCFG_EX struCamcfg = new NET_DVR_CAMERAPARAMCFG_EX();
    struCamcfg.write();
    Pointer lpIpParaConfig = struCamcfg.getPointer();
    boolean flg =sdk.NET_DVR_GetDVRConfig(user,HCNetSDK.NET_DVR_GET_CCDPARAMCFG,
    new NativeLong(0xFFFFFFFF), lpIpParaConfig,struCamcfg.size(), ibrBytesReturned);
    struCamcfg.read();

    4、注销设备:
    代码如下:

    sdk.NET_DVR_Logout(user);//注销设备

    5、释放SDK空间:
    代码如下:

    sdk.NET_DVR_Cleanup();//释放SDK

    6、完整代码如下:

    public static void getPicturedisposition(String ip, short port,
                String userName, String password) {
            // 初始化设备
            HCNetSDK sdk = HCNetSDK.INSTANCE;
            // 是否初始化成功
            if (!sdk.NET_DVR_Init()) {
                System.out.println("初始化失败");
                return ;
            }
            // 注册设备
            NativeLong user = new NativeLong(-1);
            // 设备信息
            NET_DVR_DEVICEINFO_V30 devinfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
            // 返回一个用户编号
            user = sdk.NET_DVR_Login_V30(ip, port, userName, password, devinfo);
            int Iuid = user.intValue();
            if (Iuid < 0) {
                System.out.println("注册失败");
                return ;
            }
            // 设备信息
            boolean bool = false;
            if (!bool) {
                IntByReference ibrBytesReturned = new IntByReference(0);// 获取IP接入配置参数
                NET_DVR_CAMERAPARAMCFG_EX struCamcfg = new NET_DVR_CAMERAPARAMCFG_EX();
                struCamcfg.write();
                Pointer lpIpParaConfig = struCamcfg.getPointer();
                boolean flg = sdk.NET_DVR_GetDVRConfig(user,
                        HCNetSDK.NET_DVR_GET_CCDPARAMCFG,
                        new NativeLong(0xFFFFFFFF), lpIpParaConfig,
                        struCamcfg.size(), ibrBytesReturned);
                struCamcfg.read();
                if (!flg) {
                    System.out.println(sdk.NET_DVR_GetLastError());
                }
                // 获取图像参数
                System.out.print("亮度是:"
                        + struCamcfg.struVideoEffect.byBrightnessLevel);
                System.out.print("|对比度是:"
                        + struCamcfg.struVideoEffect.byContrastLevel);
                System.out.print("|饱和度是:"
                        + struCamcfg.struVideoEffect.bySaturationLevel);
                System.out.print("|色调是:" + struCamcfg.struVideoEffect.byHueLevel);
                System.out.print("|(锐度)清晰度是:"
                        + struCamcfg.struVideoEffect.bySharpnessLevel);
                System.out.print("|(防补光过曝)使能是:"
                        + struCamcfg.struVideoEffect.byEnableFunc);
                System.out.print("|强光抑制等级:"
                        + struCamcfg.struVideoEffect.byLightInhibitLevel);
                System.out
                        .println("|灰度值域" + struCamcfg.struVideoEffect.byGrayLevel);
            }
            // 注销设备
            sdk.NET_DVR_Logout(user);
            // 释放SDK
            sdk.NET_DVR_Cleanup();
        }

    7、效果图
    效果图

  • 相关阅读:
    java积累
    J2SE J2EE J2ME的区别
    php无刷新上传图片
    C++小例子
    交通银行万事达Y-POWER信用卡 普卡
    代码面试最常用的5大算法
    php 读取 word
    PHP Simple HTML DOM 使用
    curl http认证
    PHP PDO 安装使用
  • 原文地址:https://www.cnblogs.com/G1432291874/p/9346035.html
Copyright © 2011-2022 走看看