【问题标题】:Image stitching in android using OpenCV使用OpenCV在android中进行图像拼接
【发布时间】:2013-03-07 16:48:49
【问题描述】:

我正在尝试在 android 中拼接像全景视图这样的图像。我正在使用 Android NDK 和 OpenCv 库。我正在使用下面的 Jni 代码来拼接图像

第一种方法:

extern "C" {

JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial3_Sample3Native_FindFeatures(
    JNIEnv*, jobject, jlong im1, jlong im2, jlong im3, jint no_images) {

vector<Mat> imgs;
bool try_use_gpu = false;
Mat& temp1 = *((Mat*) im1);
Mat& temp2 = *((Mat*) im2);
Mat& pano = *((Mat*) im3);
 __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Before stitching Images\n...");
 if(temp1.empty() || temp2.empty())
  {
     
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Can’t read one of the images\n...");
     printf("Can’t read one of the images\n");

   }
 else{
imgs.push_back(temp1);
imgs.push_back(temp2);

Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
Stitcher::Status status = stitcher.stitch(imgs, pano);

    if (status != Stitcher::OK)
    {
__android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Can't stitch images, error code = %i" +status);
    }
  else
  {
 __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Stitching Image Successfully");
   }

上面的代码对于某些图像可以正常工作,但是如果我使用相机拍摄图像并尝试使用上面的代码缝合这些图像,那么它就不起作用了。我正在使用下面的代码从 android 调用本机代码

FindFeatures(Highgui.imread(path + "Pano1.jpg").getNativeObjAddr(), Highgui.imread(path+"Pano2.jpg").getNativeObjAddr(),panorama.getNativeObjAddr(), 2);
Highgui.imwrite(StitchImageDir.getPath()+ File.separator + "panoStich"+dateFormat.format(dateNow) +mImageExt, panorama);

方法声明

public native void FindFeatures(long image1, long image2, long image3,int count);

第二种方法:

我还尝试使用 SurfFeatureDetector 拼接图像,其代码可用here。在此代码中,我得到了 undefined reference to `cv::SURF::SURF(double, int, int, bool) 的编译错误, bool)'。虽然我已经在头文件和 NDK 的构建路径中包含了所有必要的库。我不明白问题是什么?

任何人对以上两种图像拼接方法或任何其他图像拼接的新想法或方法有任何想法,请建议我。提前致谢。

【问题讨论】:

    标签: android c++ opencv java-native-interface opencv-stitching


    【解决方案1】:

    关于编译错误:您似乎没有正确链接opencv,或者您错过了添加lib文件。 如果您使用的是调试模式 OpenCV 2.x.x,请检查是否添加了这些库:

    opencv_nonfree2xxd.lib

    opencv_features2d2xxd.lib

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2011-08-26
      • 2012-04-14
      • 2011-12-26
      • 2012-12-01
      • 2019-01-01
      • 2012-01-02
      相关资源
      最近更新 更多