0

画像のキーポイントを検出するために OrbFeaturesFinder を使用しています。

Ptr<FeaturesFinder> finder;
finder = makePtr<OrbFeaturesFinder>();
vector<ImageFeatures> features(num_images);
(*finder)(img, features[i]);

このコードを Linux で使用し、Android でも同じように実装しましたが、リンクhttp://imgur.com/a/wQXZxのように、結果が異なる場合があり ます。

この出力の性質の背後にある理由は何ですか。

Androidで画像にアクセスする方法 画像はjpeg形式で保存してから読み込む[編集] -

    for(int i = 0; i < imgNames.size(); i++){
        Bitmap bitmap = getThumbnail(imgNames.get(i));
        int imageW = bitmap.getWidth();
        int imageH = bitmap.getHeight();

        byte[] rgb = getByteArray(imageW, imageH, bitmap, "RGB");
        bitmap.recycle();

        Mat mRgb = new Mat(imageH, imageW, CvType.CV_8UC3);
        mRgb.put(0, 0, rgb);
        Imgproc.cvtColor(mRgb, mRgb, Imgproc.COLOR_BGR2RGB, 3);

        panoImgs.add(mRgb);

    }

そしてjniに送信されます-

jclass matClass = env->FindClass("org/opencv/core/Mat");
jmethodID getNativeAddr = env->GetMethodID(matClass, "getNativeObjAddr", "()J");

int numImgs = env->GetArrayLength(jInputArray);

vector<Mat> natImgs;
for(int i=0; i < numImgs; ++i) {
    natImgs.push_back(
        *(Mat*)env->CallLongMethod(
                env->GetObjectArrayElement(jInputArray, i),
                getNativeAddr
        )
    );
}

Linux の場合 - 同じ画像を jpeg 形式で保存し、imread を使用してファイルにアクセスしています。

4

0 に答える 0