0

我正在开发需要实时图像处理任务的 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;  
     }

}

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

4

2 回答 2

1

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

于 2013-02-13T17:39:44.973 回答
0

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

于 2012-09-27T14:33:14.987 回答