我正在开发需要实时图像处理任务的 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;
}
}
准确性并不重要,我现在可以在准确性上妥协,因为我只需要这个想法