【问题标题】:Want Android Image Processing without OpenCV or any other liberary which use NDK想要没有 OpenCV 或任何其他使用 NDK 的库的 Android 图像处理
【发布时间】:2013-02-14 01:39:44
【问题描述】:

我正在开发需要实时图像处理任务的 android 应用程序 我正在使用 OpenCV 教程 0 进行相机设置,并使用我已经完成编码直到接收实时图像的同一类, 现在我想检测一个标志并检测微笑 我在互联网上进行的大多数搜索都是基于 OpenCV 的,或者使用了这样的库,这些库使应用程序变得如此严重,或者使用了我发现很难集成的 NDK。 我想要简单的 java 实现来检测占用很少资源的功能,因为我必须同时执行许多其他任务 任何人都可以向我推荐一些书籍或网站或任何其他链接或任何用于图像匹配和微笑检测技术的代码,请帮助我真的被卡住了我已经尝试了以下代码但没有太大帮助,因为是像素到像素匹配

private boolean  bit_match(Bitmap bmp1, Bitmap bmp2)
{  
    boolean first_x = false;
    int x1 = -2, x2 = -2,y1,y2;
    int minx1=-1,maxx2=-1,miny1=-1,maxy2=-1;
    int w = bmp1.getWidth();
    int h = bmp1.getHeight();

    int[]  pixels1 = new int[w * h];
    int[] pixels2 = new int[w * h];

      total_rounds=0;
      match_count=0;


    //long start = new Date().getTime();
     bmp1.getPixels( pixels1, 0,w, 0, 0, w, h );
     bmp2.getPixels( pixels2, 0,w, 0, 0, w, h );


     for (int i = 0; i < w; i++) {
            for (int j = 0; j < h; j++) 
            {
                    if (pixels2[i + j * w] != pixels1[i + j * w]) 
                    {
                        if(!first_x){ minx1=i; miny1=j; maxx2=i; maxy2=j; first_x = true; }
                        if(minx1>i) minx1 = i;
                        if(miny1>j) miny1 = j;
                        if(maxx2<i) maxx2 = i;
                        if(maxy2<j) maxy2 = j;
                        // System.out.println(i +"x"+ j);
                    }else{ match_count++;}

                    total_rounds++;
            }
     }
     if(minx1==maxx2 && maxy2==miny1)
     { 
         //System.out.println("Un singur pixel modificat");
         //Toast.makeText(this,"Un Modified", Toast.LENGTH_LONG).show();
         return true;
     }
     else{
        // System.out.println("Modified part (rectangle): "+minx1+","+miny1+"<->"+maxx2+","+maxy2);
         //Toast.makeText(this,"Modified part (rectangle): "+minx1+","+miny1+"<->"+maxx2+","+maxy2, Toast.LENGTH_LONG).show();
     return false;  
     }

}

准确性并不重要,我现在可以在准确性上妥协,因为我只需要这个想法

【问题讨论】:

  • 图像处理太慢如果你用Java来做。这基本上就是人们使用 NDK 的原因。
  • 感谢您的评论,实际上作为高级语言开发人员并且一直在使用 Visual Studio,我真的不知道 make 文件以及如何配置或使用 NDK,这就是我害怕使用的原因它

标签: android image-processing


【解决方案1】:

如果您想使用 OpenCV for Android 进行图像处理,则无需使用 NDK。请查看this description。我知道这并不简单,但在您的开发级别上,您只需要编写纯 Java 代码。

【讨论】:

    【解决方案2】:

    这是通过 NDK https://github.com/chrisbanes/PhotoProcessing 进行图像处理的示例 如果您不想弄乱 NDK,您也可以使用 OpenGL 进行图像处理,尽管对于您想要做的事情,我会推荐 NDK

    【讨论】:

    • 谢谢,但我真的不想弄乱 NDK,因为我真的不知道如何使用它,我对 OpenGL 有想法,这就是为什么我问是否找到任何实现示例以便我可以使用它
    猜你喜欢
    • 2021-06-27
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多