0

実機で(カメラで撮影した)画像・画像のデータセットをトレーニングすることは可能ですか?それとも、これはコマンド ライン ツールを使用して行うことで可能ですか?

genTexDataこのための API はありますか、それともデバイス用のツールをコンパイルする必要がありますか?

4

2 に答える 2

1

ARToolkit は、マーカーの自動トレーニングをサポートしていません。実際、コマンド ライン ツールは、複雑なマーカーや大きなマーカーの場合、時間がかかる場合があります。

可能ですが、自分で行う必要があります。あなたが示唆したように、デバイスのgenTexDataをコンパイルするのが道です(またはサーバーに入れてhttp経由でアクセスします)。

于 2016-09-12T08:06:25.450 に答える
1

私はあなたが言及したことをやろうとしました。電話でデータを生成することが可能です。Samsung Galaxy S5を使用しました。

アプリケーションはカメラの写真を撮り、ボタンを介して genTexData.cpp (android で動作するように変更) に JNICall を作成し、iset、fset、および fset3 ファイルをキャッシュ フォルダーに保存します。(InfoButtonで確認しました)。唯一の問題は、大きな画像で最大 25 分かかることです。私はこれを最適化しようとしていますが、関数で何が起こっているかについての適切な API または適切なドキュメントがなければ、それは本当に難しいです。

また、FAST と SIFT を使用してより高速なファイルを生成することも考えていますが、それらから生成されたデータが ARToolKit 追跡に適合するかどうかはわかりません。

より良い結果が得られたり、最適化されたりした場合は、遠慮なく答えてください。ここで私が使用したJNICode:

extern "C"
JNIEXPORT jint JNICALL JNIFUNCTION_NATIVE(trainNFT(JNIEnv *env, jobject obj,     jstring imagePath))
{
    jint resultCode;
    ReturnCode result;
    //Get the native string from imagePath
    const char* nativePath = env->GetStringUTFChars(imagePath, 0);

    result = genTexData(nativePath);

    switch(result)
    {
    case E_NO_ERROR:
        resultCode = 0;
        break;
    case E_BAD_PARAMETER:
        resultCode = 64;
        break;
    case E_INPUT_DATA_ERROR:
        resultCode = 65;
        break;
    case E_USER_INPUT_CANCELLED:
        resultCode = 66;
        break;
    case E_BACKGROUND_OPERATION_UNSUPPORTED:
        resultCode = 69;
        break;
    case E_DATA_PROCESSING_ERROR:
        resultCode = 70;
        break;
    case E_UNABLE_TO_DETACH_FROM_CONTROLLING_TERMINAL:
        resultCode = 71;
        break;
    case E_COULDNT_READ_IMAGE_FROM_FILE:
        resultCode = 73;
        break;
    case E_GENERIC_ERROR:
        resultCode = 255;
        break;
    default:
        resultCode = 42;
        break;
    }

    env->ReleaseStringUTFChars(imagePath, nativePath);

    return resultCode;
}

jstring は、Imagename を持つアプリケーションのキャッシュ フォルダーへのパスです。

Option パラメータを要求しないように genTexData を変更し、アプリケーションのデフォルト値を設定しました。メソッドが取る唯一のパラメーターは、imagePath です。元の終了コードである結果コードを返します。AndroidActivity では、結果コードをチェックし、対応するメッセージをユーザーに提供します。

バージョンはまだ完全ではありません。また、この種の genTexData (Background、Userinput) では発生しないいくつかの終了コードを削除する必要があります。また、世代を最適化するには、他の .c ファイル (featureMap.c、featureSet.c など) を変更する必要があります。

于 2016-09-20T09:30:57.707 に答える