2012-09-27 3 views
0

나는 실시간으로 이미지 처리 작업이 필요한 안드로이드 응용 프로그램을 개발 중입니다. OpenCV 튜토리얼 0을 사용하여 카메라 설정을하고 동일한 클래스를 사용하여 코딩을 완료했습니다. 이제 로고를 감지하고 미소를 감지하고 싶습니다. 인터넷에서 검색 한 대부분의 내용이 OpenCV를 기반으로하거나 응용 프로그램을 너무 많이 사용하거나 매우 어려운 것으로 밝혀진 그러한 라이브러리를 사용했습니다. 통합. 다른 많은 작업을 동시에 수행해야하므로 리소스를 거의 사용하지 않는 기능을 감지하기위한 간단한 Java 구현을 원합니다. 어떤 책이나 웹 사이트 또는 다른 링크 나 이미지 일치 및 미소 감지 기술 코드를 알려줄 수 있습니까? , 내가 같이 난 다음 코드를하지만 훨씬 도움이되지를 시도 정말 stucked입니다 도와주세요하면 난 그냥 아이디어를 필요로하는 많은 내가 지금 정확성과 타협 할 수OpenCV 또는 NDK를 사용하는 다른 자유가없는 안드로이드 이미지 처리

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

} 

정확성이 중요하지 않다 일치하는 픽셀에 픽셀입니다

+1

Java에서 이미지 처리가 너무 느립니다. 이것은 기본적으로 사람들이 NDK를 사용하는 이유입니다. – zapl

+0

실제로 고수준 언어 개발자가되어서 Visual Studio를 항상 사용하여 주셔서 감사합니다. 파일을 만들고 구성하고 NDK를 사용하는 방법에 대해 전혀 모릅니다. 그 이유는 내가 사용하는 것을 두려워합니다. –

답변

0

다음은 NDK를 통한 이미지 처리의 예입니다. https://github.com/chrisbanes/PhotoProcessing 당신이 원하는 것을 위해 NDK를 망치고 싶지 않다면 OpenGL을 사용할 수도 있습니다. NDK를 추천합니다

+0

고마워요.하지만 정말로 그렇지 않습니다. 내가 어떻게 그것을 사용하는 방법에 대해 정말로 모르겠 NDK를 망쳐 놓고 싶습니다, 내가 OpenGL에 대한 아이디어가 있기 때문에 내가 그것을 사용할 수있는 모든 구현 예제를 찾았는지 물었습니다 –

1

OpenCV로 이미지 처리를하고 싶다면 NDK를 사용할 필요가 없습니다 Android 용. this description을 확인하십시오. 나는 그것이 단순하지 않다는 것을 알고 있지만 개발 단계에서 순수한 자바 코드 만 작성하면된다.

관련 문제