ホームページ >Java >&#&チュートリアル >Java Hikvision SDKの二次開発に必須のスキルをマスターする

Java Hikvision SDKの二次開発に必須のスキルをマスターする

WBOY
WBOYオリジナル
2023-09-06 08:10:441160ブラウズ

Java Hikvision SDKの二次開発に必須のスキルをマスターする

Java Hikvision SDK の二次開発に必要なスキルをマスターする

はじめに:
情報技術の急速な発展に伴い、ビデオ監視システムはさまざまな分野で広く使用されています。様々な分野、幅広い用途に対応します。国内のビデオ監視ソリューションの大手プロバイダーとして、Hikvision の製品と技術は常に市場で重要な地位を占めてきました。さまざまなプロジェクトのニーズを満たすために、Hikvision は開発者が二次開発を実行するための SDK を提供します。この記事では、Java Hikvision SDK の二次開発を習得するための重要なスキルをいくつか紹介し、対応するコード例を添付します。

1. Hikvision SDK の機能とインターフェースを理解する

Java Hikvision SDK の二次開発を行う前に、まず Hikvision SDK の機能とインターフェースを理解する必要があります。 Hikvision は、ビデオ監視、顔認識、インテリジェント分析などの機能をカバーする豊富な SDK インターフェイスを提供します。開発者は、特定のニーズに応じて、開発に対応するインターフェイスを選択できます。 SDKの基本的な機能をマスターしたら、二次開発の実践を始めましょう。

2. 開発環境を設定し、SDK パッケージをインポートする

Java Hikvision SDK の二次開発を実行する前に、開発環境を設定し、SDK パッケージをインポートする必要があります。まず、Hikvision SDK の Java 開発パッケージをダウンロードし、開発ツールにインポートします。次に、関連する依存ライブラリと動作環境を設定する必要があります。特定の構成手順については、Hikvision の公式ドキュメントを参照してください。

3. ビデオ監視機能の実装

  1. SDK の初期化

ビデオ監視機能の二次開発を実行する前に、次のことを行う必要があります。最初に SDK を初期化します。具体的なコードは次のとおりです。

HCNetSDK.INSTANCE.NET_DVR_Init();
  1. デバイスへのログイン

デバイスへのログインは、ビデオ監視機能の重要なステップです。管理者アカウントを使用してログインし、後続の操作のためのログイン ハンドルを取得できます。具体的なコードは次のとおりです。

HCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
loginInfo.sDeviceAddress = "192.168.1.100";
loginInfo.sUserName = "admin";
loginInfo.sPassword = "123456";
loginInfo.wPort = 8000;

HCNetSDK.NET_DVR_DEVICEINFO_V40 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
IntByReference errorCode = new IntByReference();

int loginHandle = HCNetSDK.INSTANCE.NET_DVR_Login_V40(loginInfo, deviceInfo);
if (loginHandle < 0) {
    int error = HCNetSDK.INSTANCE.NET_DVR_GetLastError();
    System.out.println("登录失败,错误码:" + error);
} else {
    System.out.println("登录成功,登录句柄:" + loginHandle);
}
  1. リアルタイム プレビュー

リアルタイム プレビューは、ビデオ監視機能でよく使用される機能の 1 つです。チャンネル番号とプレビューウィンドウを指定することで、リアルタイムにプレビューすることができます。具体的なコードは次のとおりです。

HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO();
previewInfo.lChannel = 1;//通道号
previewInfo.hPlayWnd = hWnd;//预览窗口句柄

HCNetSDK.PlayCtrl.INSTANCE.PlayM4_SetDecodeThreadNum(2);

IntByReference previewHandle = new IntByReference();

previewHandle.setValue(HCNetSDK.INSTANCE.NET_DVR_RealPlay_V40(loginHandle, previewInfo, null));
if (previewHandle.getValue() == -1) {
    int error = HCNetSDK.INSTANCE.NET_DVR_GetLastError();
    System.out.println("实时预览失败,错误码:" + error);
} else {
    System.out.println("实时预览成功,预览句柄:" + previewHandle.getValue());
}
  1. プレビューを停止してデバイスからログアウト

プレビューが必要なくなったら、プレビューを停止してログを記録する必要があります。デバイスから外します。具体的なコードは以下の通りです:

HCNetSDK.INSTANCE.NET_DVR_StopRealPlay(previewHandle.getValue());
HCNetSDK.INSTANCE.NET_DVR_Logout_V30(loginHandle);
HCNetSDK.INSTANCE.NET_DVR_Cleanup();

4. 顔認識機能の実装

  1. SDKの初期化

ビデオ監視機能と同様に、最初の SDK を初期化します。具体的なコードは次のとおりです。

HikvisionLibrary.INSTANCE.NET_DVR_Init();
  1. デバイスへのログイン

デバイスへのログインは、顔認識機能の重要なステップです。管理者アカウントを使用してログインし、後続の操作のためのログイン ハンドルを取得できます。具体的なコードは次のとおりです。

HikvisionLibrary.NET_DVR_USER_LOGIN_INFO loginInfo = new HikvisionLibrary.NET_DVR_USER_LOGIN_INFO();
loginInfo.sDeviceAddress = "192.168.1.100";
loginInfo.sUserName = "admin";
loginInfo.sPassword = "123456";
loginInfo.wPort = 8000;

HikvisionLibrary.NET_DVR_DEVICEINFO_V40 deviceInfo = new HikvisionLibrary.NET_DVR_DEVICEINFO_V40();
IntByReference errorCode = new IntByReference();

int loginHandle = HikvisionLibrary.INSTANCE.NET_DVR_Login_V40(loginInfo, deviceInfo);
if (loginHandle < 0) {
    int error = HikvisionLibrary.INSTANCE.NET_DVR_GetLastError();
    System.out.println("登录失败,错误码:" + error);
} else {
    System.out.println("登录成功,登录句柄:" + loginHandle);
}
  1. 顔検出と顔比較

顔認識機能の中核は、顔検出と顔比較です。画像パスを指定することで顔検出を実行し、比較アルゴリズムを通じて顔比較を実行できます。具体的なコードは次のとおりです。

HikvisionLibrary.NET_DVR_FACE_COND faceCond = new HikvisionLibrary.NET_DVR_FACE_COND();
faceCond.dwFaceNum = 1;

HikvisionLibrary.NET_DVR_FACE_RECORD[] faceRecord = (HikvisionLibrary.NET_DVR_FACE_RECORD[]) new HikvisionLibrary.NET_DVR_FACE_RECORD().toArray(1);
faceRecord[0].byCardNo = "001".getBytes();
faceRecord[0].byFacePicNum = 1;
faceRecord[0].struFacePicInfo[0].byFaceQuality = 50;
faceRecord[0].struFacePicInfo[0].wFacePicLen = facePicData.length;
System.arraycopy(facePicData, 0, faceRecord[0].struFacePicInfo[0].byFacePicBuffer, 0, facePicData.length);

HikvisionLibrary.NET_DVR_FACE_STATUS status = new HikvisionLibrary.NET_DVR_FACE_STATUS();

int handle = HikvisionLibrary.INSTANCE.NET_DVR_StartRemoteConfig(loginHandle, HikvisionLibrary.NET_DVR_SET_FACE_RECORD, faceCond.getPointer(), faceCond.size(), null, null);
if (handle == -1) {
    int error = HikvisionLibrary.INSTANCE.NET_DVR_GetLastError();
    System.out.println("开始远程配置失败,错误码:" + error);
    return;
}
IntByReference bytesReturned = new IntByReference();
HikvisionLibrary.INSTANCE.NET_DVR_SendRemoteConfig(handle, faceRecord, faceRecord[0].size(), bytesReturned);
HikvisionLibrary.INSTANCE.NET_DVR_StopRemoteConfig(handle);
int error = HikvisionLibrary.INSTANCE.NET_DVR_GetLastError();
if (error != 0) {
    System.out.println("人脸比对失败,错误码:" + error);
} else {
    System.out.println("人脸比对成功");
}

5. まとめ

この記事では、Java Hikvision SDK の二次開発をマスターするために必要なスキルを紹介し、ビデオ監視やビデオ監視などの機能の説明も提供します。顔認識 コード例。学習と実践を通じて、開発者は Hikvision SDK を二次開発に柔軟に使用して、さまざまなプロジェクトのニーズを満たすことができます。もちろん、開発者が探索して適用するのを待っている機能やインターフェイスは他にもあります。この記事が Java Hikvision SDK の二次開発の学習と実践に役立つことを願っています。

以上がJava Hikvision SDKの二次開発に必須のスキルをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。