このトピックでは、Queen SDKに関するよくある質問 (FAQ) に対する回答を提供します。
目次
Queen SDKのAPI操作を呼び出すための要件は何ですか?
Queen SDKのAPI操作 (リソースの作成、設定、使用、および破棄のために呼び出すことができる操作を含む) を呼び出すときに、次の要件が満たされていることを確認してください。
すべてのAPI操作は、同じスレッドを使用して呼び出す必要があります。
スレッドには、グラフィックライブラリ (GL) コンテキストが必要です。 GLコンテキストが存在しない場合は、Queen SDKのAPI操作を呼び出して作成できます。
エラーのトラブルシューティングとデバッグ方法?
アンドロイド:
エンジンの作成後、デバッグを有効にします。
engine.enableDebugLog();キーワードQueenを入力すると、Queen SDKの動作ステータスを記録する出力ログを検索できます。 次の図は、ログの例を示しています。

DEBUGレベルのログから詳細な情報を取得し、INFOレベルのログからより簡潔な情報を取得できます。
入力パラメーターと出力パラメーターを指定するにはどうすればよいですか?
Queen SDKは、現在の画像の最適な入力パラメータを自動的に計算する組み込みのインテリジェントアルゴリズムを提供します。 予想される入力パラメーター値を表示するには、次の手順を実行します。
エンジンを作成するときに、アルゴリズムの入力モードをauto: config.algInputMode = AlgInputMode.kModeAutomatic;

エンジンの作成後にデバッグを有効にします。
engine.enableDebugLog();次の図に示すように、ログをフィルタリングしてLogcat出力を表示できます。

ログの例では、input_angle、out_angle、およびout_flipフィールドの値は、アルゴリズムによって生成された値であり、現在の画像の予想される入力パラメータ値です。
インテリジェントアルゴリズムを使用するには、パフォーマンスのオーバーヘッドが必要です。 テストが完了したら、前の2つの手順で行った変更をタイムリーに元に戻します。
Queen SDKはどのように機能しますか?
Queen SDKは、何年にもわたる反復を経て、パフォーマンス、レタッチ効果、効率性の面で業界をリードするよう努めています。 パフォーマンスの最適化は、Queen SDKの最優先事項です。 Alibaba Cloudは、特に東南アジアで普及しているローエンドデバイスや以前のバージョンのオペレーティングシステムに対して、Queen SDKの特殊な最適化とイテレーションを実施しています。 複数回の最適化のおかげで、Queen SDKは業界をリードするパフォーマンスを実現します。 Queen SDKは、さまざまなビジネス要件に対応するために、各機能のさまざまなバージョンを提供します。 たとえば、レタッチモジュールは、高度な省電力、スマート調整モードをサポートしています。 定期的なイテレーション中、各バージョンには専用の多次元パフォーマンステストレポートがあり、多数の内部ユーザーと外部ユーザーによって大規模に検証されます。
ブラックスクリーンの問題を解決するにはどうすればよいですか?
原因: ほとんどの場合、無効なテクスチャIDが使用された場合、またはテクスチャ生成プロセスでエラーが発生した場合に黒い画面が表示されます。 返されたテクスチャIDを不適切に使用したり、無効なテクスチャIDを使用してビジネスレイヤーをレンダリングしたりすると、ブラックスクリーンの問題が発生することがあります。
ソリューション: Queen SDKのレンダリングレイヤーは、Open Graphics Library (OpenGL) に基づいて構築されています。 ブラックスクリーンの問題を解決するには、Queen SDKに渡されるテクスチャIDが有効であることを確認します。 これにより、Queen SDKは、出力テクスチャが正常に表示されるようにします。 Queen SDKは、エフェクトが適用されていない場合、無効なパラメーターが存在する場合、またはQueen SDKを使用するためのライセンスを取得していない場合でも、元のテクスチャを返すことができます。
アプリケーションをQueen SDKと統合した後、画像を表示せずに携帯電話を移動すると、画面が単色で点滅したり、色が変わったりするのはなぜですか?
原因: エンジンの構築パラメーターtoScreenがtrueに設定され、入力テクスチャタイプがoesで、パラメーターなしでrender() メソッドが使用されている場合に問題が発生する可能性があります。
解決策: render() をrenderTexture(matrix) に置き換えます。 入力テクスチャタイプがoesの場合は、renderTexture() メソッドを使用する必要があります。 行列パラメータの値は、SurfaceTextureクラスを使用して取得されます。
起動後にアプリケーションが予期せず終了した場合はどうすればよいですか?
engine.setInputTextureのtextureIdパラメーターの値が有効であることを確認してから、アプリケーションを再起動します。
画像を90度回転させて横向きモードで表示したときに、ステッカーまたはメイクアップ機能が顔を認識できない問題を解決するにはどうすればよいですか?
原因: エンジンの構築パラメーターtoScreenがtrueに設定され、入力テクスチャタイプがoesで、パラメーターなしでrender() メソッドが使用され、アルゴリズムがbytebufferメソッドの代わりにフレームフェッチメソッドを使用する場合、問題が発生する可能性があります。
ソリューション: bytebufferメソッドを使用します。 しかしながら、顔画像は、幅および高さの変化に起因して、誤って拡大または縮小され得る。
基本的なレタッチ機能が有効であるのに、高度なレタッチ、メイク、およびステッカー機能が無効なのはなぜですか?
基本的なレタッチ機能を使用できる場合、QueenEngineの初期化、パラメーター設定、およびレンダリングプロセスは有効です。 高度なレタッチ機能の無効性は、通常、無効なパラメータ設定によって引き起こされます。 高度なレタッチ設定が無効な場合、顔は認識できず、顔のランドマークを必要とするすべてのエフェクトが無効になります。 次に、一般的な無効なパラメーター設定について説明します。
setInputTexture(int texture, int width, int height, boolean isOES)メソッドの入力テクスチャのwidthパラメーターとheightパラメーターに無効な値を指定します。widthとheightパラメーターの値は、textureパラメーターで指定されている現在のテクスチャの幅と高さである必要があります。isOESパラメーターの値は、テクスチャがAndroidに固有のoesテクスチャであるかどうかを指定します。 テクスチャがoesかどうかによって、QueenEngineがテクスチャ表示変換を実行する必要があるかどうかが決まります。 QueenEngineがテクスチャ表示変換を実行する必要がある場合は、現在のカメラの正しい行列をrenderパラメーターを使用して渡す必要があります。 指定する幅と高さによって、表示されるレンダリングビューのアスペクト比が決まります。 これは、高度な機能の効果が適用されるレンダリングビューのスケーリング比に影響を与える可能性があります。 一般的な結果として、高度なフィーチャの効果は適用されますが、画像は拡大および変形されます。updateInputDataAndRunAlg(byte[] imageData、int format、int width、int height、int stride、int inputAngle、int outAngle、int flipAxis、boolean reuseData)メソッドのinput widthおよびheightパラメーターに無効な値を指定します。widthおよびheightパラメーターの値は、imageDataパラメーターで指定された現在の入力データの実際の幅と高さを指定します。 幅と高さは、前のシナリオで指定した幅と高さと同じにすることも、逆にすることもできます。 たとえば、Androidデバイスのカメラから直接取得したbufferの値は、画像を90度回転させ、幅と高さを逆にしたときのバッファになります。 指定する幅と高さによって、顔を認識できるかどうか、および顔認識に関連するフィーチャを使用できるかどうかが決まります。updateInputDataAndRunAlg(byte[] imageData、int format、int width、int height、int stride、int inputAngle、int outAngle、int flipAxis、boolean reuseData)メソッドの入力パラメーターに無効な値を指定するか、BuupdateInputTextureintメソッドの入力パラメーターに無効な値を指定します。inputAngle、outAngle、およびflipAxisパラメーターは、顔認識フィーチャーに必要です。inputAngleパラメータは、アルゴリズムが入力データまたはテクスチャをどのように使用するか、画像を回転させる必要があるかどうか、および画像を何度回転させるかを決定します。outAngleパラメーターは、アルゴリズムが認識された結果をレンダリングして表示する方法、画像を回転させる必要があるかどうか、画像を回転させる角度を決定します。flipAxisパラメーターは列挙値で、QueenEngineで定義されており、最終的にレンダリングされた画像を対称に反転するかどうか、反転がX軸に沿っているかY軸に沿っているかを決定します。 前述のパラメータは、顔認識を実施するために使用されるアルゴリズムにとって重要である。 パラメータは、現在のカメラアングルと、フロントカメラが使用されているかリアカメラが使用されているかに密接に関連しています。 inputAngle、outAngle、およびflipAxisパラメーターは、ユーティリティクラスQueenCameraHelper.javaにカプセル化されます。 これらのパラメーターの値は、ビジネス要件に基づいてさまざまなアプリケーションで直接使用または調整できます。