JCV AR SDK iOS 統合ドキュメント

目次

1.統合の準備

1.1 ライブラリファイルのインポート

1.2 リンクライブラリの追加

1.3 ビットコードの無効化

1.4 ヘッダーファイルのインポート

2.SDK のアクティベーション

2.1 ライセンス認証

2.2 アクティベーションコードの認証

3.SDK API の使用

3.1 SDK ハンドルの初期化

3.2 テクスチャの取得

3.3 テクスチャの前処理

3.4 フレーム処理フロー

3.5 SDK ハンドルの解放

4.お客様によるカスタマイズ

4.1 顔検知

4.2 美化

4.3 スタンプ

5.統合に関する考慮事項

6.検知のレンダリングの最適化

※一部コードが資料の都合上途切れている部分があります。サンプルコードと同じ内容が記載されておりますので、該当のサンプルコードにてご確認お願い致します。

1 統合の準備

1.1 ライブラリファイルのインポート

JCV AR iOS SDK のヘッダーファイル、静的ライブラリファイル (.a)、ライセンスファイル (.lic)、およびモデルファイル (.model) をインポートします (下図を参照)。

project structure

1.2 リンクライブラリの追加

SDK の stdc ++ を使用します。[ターゲット]、[ビルド設定]、[リンク]、[その他のリンカーフラグ] の順にクリックして、-lstdc ++ を追加します。

1.3 ビットコードの無効化

SDK はビットコードをサポートしていません。[ターゲット]、[ビルド設定]、[ビルドオプション] の順にクリックし、[ビットコインの有効化] を [いいえ] に設定します。

1.4 ヘッダーファイルのインポート

必要に応じて、必要なヘッダーファイルをインポートします。

2 SDK のアクティベーション

2.1 ライセンス認証

1.SDK は、ライセンスファイルに従って、アルゴリズムライブラリの権限をチェックします。通常、アクティベーション完了後にのみ、SDK の機能を使用できます。

2.認証方法には、オンライン認証とオフライン認証があります。オンライン認証では、サーバーにホストされているライセンス情報を取得する必要があり、オフライン認証では、ローカルライセンスを使用して検出することができます。 ※基本的にオフライン認証の提供になりますため、オンライン認証が必要な場合は別途ご連絡ください。

2.2 アクティベーションコードの認証

(1)ライセンスファイルのコンテンツを読み込みます。

(2)ローカルコンピューターに保存されたアクティベーションコードを取得します。

(3)利用可能なアクティベーションコードがない場合は、生成します。

(4)checkActiveCode * コマンドを直接実行して、アクティベーションコードが有効であるかどうか確認します。

(5)確認に失敗した場合は、別のアクティベーションコードを生成します。

(6)生成に失敗した場合は、エラーメッセージが表示されます。成功すると、新しいアクティベーションコードが保存され、成功したことを示すメッセージが表示されます。

3 SDK API の使用

3.1 SDK ハンドルの初期化

1.HumanAction の初期化

2.顔属性 API ハンドルの初期化

3.美化 API ハンドルの初期化

4.スタンプ API ハンドルの初期化

5.フィルター API ハンドルの初期化

6.一般的なオブジェクト API ハンドルの初期化

SDK ハンドルの初期化が終了しました。詳細については、公式のデモをご参照ください。 注記: 本 SDK は、オブジェクトの美化およびフィルター化の統一されたコンテキスト内にある必要があります。次のように設定します。

注記: コンテキストが異なると、エラーが発生する可能性があるため、OpenGL コンテキストが同じであることを確認してください。

3.2 テクスチャの取得

1.STCamera の使用

解像度や出力フォーマットなど、多数のパラメーターを簡単に設定できます。詳細については、STCamera.h ファイルをご参照ください。

2.STCamera からテクスチャを取得

3.3 テクスチャの前処理

3.4 フレーム処理フロー

1.HumanAction API の使用

回転角度: 写真を撮り、携帯電話に対して回転させて、顔を検知できる方向を確認します。これが顔を検知する際の角度です。詳細については、enum パラメーターをご参照ください。

2.表情 API の使用

表情に関する API は、動作検知の関数の結果を必要とします。したがって、次のように 動作検知の関数の後に呼び出されます。

3.顔属性 API の使用

FaceAttribute API は、HumanAction パラメーターからパラメーターを入力します。したがって、顔属性 API の実行前に、HumanAction パラメーターを設定する必要があります。

4.美化 API の使用

同様に、目の拡大や顎の縮小などの美化 API の関数も、HumanAction に由来します。

detectResult 項目は、人間の動作の検知結果用で、processedResult 項目は目の拡大や顎の縮小などの美化を行った後の顔特徴点用です (processResult 項目は、上位層で手動で割り当てられます。detectResult 項目と同じか、detectResult 項目から取り込まれたものです)。

美化パラメーターの設定:

5.スタンプ API の使用

スタンプには、主に 2D スタンプ、3D スタンプ、顔変形スタンプ、前面と背面の背景スタンプ、ジェスチャスタンプ、音楽スタンプ、メイクスタンプ、パーティクルアニメーションスタンプ、アバタースタンプ、スカイボックススタンプが含まれます。スタンプ機能を実装するには、顔情報が利用可能であることを確認し、事前に HumanAction を実行します。

スタンプのレンダリング

注記:

1.本 API は、前景スタンプの回転角度を追加します。必要に応じて使用できます。

2.スカイボックススタンプを使用するには、カメラのクォータニオンを入力してください。スカイボックスの inputEvent 項目が必要ない場合は、NULL を入力します。

詳細については、サンプルをご参照ください。

スタンプの変更:

アクションをトリガーするスタンプの取得: (st_mobile_sticker_change_package 関数を取得後にのみ、スタンプを取得します。アクションはヘッダーファイルで定義されています。)

6.フィルター API の使用

7.一般的なオブジェクト API の使用

3.5 SDK ハンドルの解放

1.GL リソースは、GL スレッドで解放する必要があります。

まとめ: 第 3 章では、本 SDK の API の使用方法に関する概要を説明しました。デモのプレゼンテーションは、SDK のより迅速な統合を促進します。いくつかの考慮すべき点を以下に示します。

1.顔属性の検知、美化、スタンプを使用するには、事前に humanAction を検知する必要があります。

2.美化、スタンプ、フィルターは、OpenGL によりレンダリングされます。そのため、同じ EAGLContext 内にある必要があります。次のように実装します。

4 お客様によるカスタマイズ

美化機能とスタンプ機能が正常に動作するようにするために、後述の方法で SDK の顔検知機能を有効にします。

4.1 顔検知

4.2 美化

事前に顔検知機能を有効にします。

美化機能を有効にします

有効にする方法 1 (テクスチャのみ出力):

美化を実施した後のデータをストリーミングまたはショートビデオの録画に使用する場合、テクスチャの前処理段階で作成された _cvBeaufigyBuffer でデータを読み取ることができます。

方法 2 (テクスチャとバッファーを出力):

補足: ストリーミングのアプリケーションシナリオの場合、

1.テクスチャの前処理段階で作成された _cvBeaufigyBuffer のデータを使用します。バッファーの作成方法の詳細については、セクション 3.3 「テクスチャの前処理」をご参照ください。

2.方法 2 で説明したように、出力バッファを使用して、美化機能を有効化できます。glReadPixels のパフォーマンスに影響するため、この方法は使用しないでください。

4.3 スタンプ

事前に顔検知機能を有効にします。

スタンプ機能の有効化

方法 1:

スタンプ追加後のデータをストリーミングやショートビデオの録画に使用する際は、テクスチャの前処理段階で作成された _cvStickerBuffer データを読み込むことができます。

方法 2:

出力バッファーのデータはスタンプと一緒に追加されます。ストリーミングやショートビデオの録画に使用できます。glReadPixels のパフォーマンスに影響するため、この方法は使用しないでください。

まとめ: 第 4 章では、美化機能とスタンプ機能を個別に有効にする方法について説明しました。前述の概念に従って自由に機能を有効にして、目的の効果を得ることができます。

5 統合に関する考慮事項

バックグラウンドで、OpenGL 関連の操作を実行しないでください。

6 検知のレンダリングの最適化

サンプルでは、検知およびレンダリングの並列ポリシーが採用されています。これは、1 つのスレッドで動作を検知し、別のスレッドで検知した動作をレンダリングすることを意味します。iOS の場合、カメラのコールバックキューで動作を直接検知します。検知した後で、動作を同期された別のキューで次のようにレンダリングします (特定のコードは省略されています。全コードは、サンプルをご参照ください)。

copyHumanAction および freeHumanAction メソッドの詳細については、サンプルをご参照ください。

Last updated

Was this helpful?