天天看點

海康攝像頭的二次開發(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、我們做海康的項目之前肯定會先看到這張流程圖,裡面的虛線部分是可選的,就是可以不必管,隻看實線框部分的即可。

海康攝像頭的二次開發(java)海康攝像頭的二次開發(java)

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

1、初始化裝置SDK,對整個網絡裝置的初始化、記憶體配置設定等操作。

代碼如下:

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

2、注冊裝置,實作使用者的注冊功能,注冊成功後,傳回的使用者ID 作為其他功能操作的唯一辨別。

代碼如下:

NativeLong user = new NativeLong(-);// 注冊裝置
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();// 擷取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(), lpIpParaConfig,struCamcfg.size(), ibrBytesReturned);
struCamcfg.read();
           

4、登出裝置:

代碼如下:

5、釋放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(-);
        // 裝置資訊
        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 < ) {
            System.out.println("注冊失敗");
            return ;
        }
        // 裝置資訊
        boolean bool = false;
        if (!bool) {
            IntByReference ibrBytesReturned = new IntByReference();// 擷取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(), 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)海康攝像頭的二次開發(java)