2012-05-17 4 views
3

안드로이드 장치에서 옵티컬 플로를 프로그래밍하려고합니다. 제 문제는 카메라에서 두 개의 연속 프레임을 얻는 것입니다.안드로이드 카메라에서 두 연속 프레임을 캡처하는 방법

그건 하나의 프레임을 얻는 코드입니다. 여기에 data을 할당하기 전에 내가 그 적절한 Java 구문이다 모르겠지만 그냥 currentFrame을 복사

private byte[] currFrame; 
private byte[] prevFrame;  

private void copyFrame(byte[] a){ 
     if(a != null) prevFrame = a; 
} 

mCamera.setPreviewCallback(new PreviewCallback() { 
      public void onPreviewFrame(byte[] data, Camera camera) { 
       synchronized (SampleViewBase.this) { 
        copyFrame(currFrame);    
        currFrame = data; 
        SampleViewBase.this.notify(); 
       } 
      } 
     }); 

:

mCamera.setPreviewCallback(new PreviewCallback() { 
     public void onPreviewFrame(byte[] data, Camera camera) { 
      synchronized (SampleViewBase.this) { 
       mFrame2 = data; 
       SampleViewBase.this.notify(); 
      } 
     } 
    });  
+0

OpenCV를 사용하고 있습니까? – MobileCushion

+1

그들은 비디오 녹화를하는 것처럼해야합니다. – Ronnie

+0

예 OpenCV를 사용하고 있으며 튜토리얼 3의 기본 코드를 따르고 있습니다. – h4p0

답변

1

당신은 다음과 같은 일을 할 수 없습니다. 어쨌든 VideoCapture 클래스를 사용하여 이미 Mat 형식의 프레임을 얻을 수 있다고 생각합니다. 나는이 클래스가 최신 릴리스에서 여전히 사용 가능한지 확실하지 않지만 Opencv 2.3에 대한 나의 경험에서 안드로이드 카메라를 사용하는 것보다 카메라 프레임을 잡는 데 훨씬 더 빠릅니다.

+0

시도했지만 작동하지 않습니다 ... 프로그램이 응답하지 않고 종료해야합니다. – h4p0

+0

내가 말했듯이 적절한 Java 코딩인지는 확실하지 않지만이를 수행하는 방법입니다. ;) – MobileCushion

+1

트릭을 했어! 첫 번째 반복에서 null 포인터 예외를 확인하지 않았습니다! – h4p0

관련 문제