OrbFeaturesFinder在Android平台上实现时会产生不同的结果

时间:2016-08-29 07:11:41

标签: opencv opencv4android opencv3.1

我正在使用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格式保存,然后读取[edit] -

    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
        )
    );
}

for linux - 我以jpeg格式保存相同的图像,然后使用imread访问文件。

0 个答案:

没有答案