2016-07-21 2 views
1

그래서 affdex SDK를 사용하여 얼굴 랜드 마크 코드를 작성하고 이미지 수신기에서받은 프레임을 전달하여 비트 맵에서 특정 픽셀을 얻으려고합니다. 이 비트 맵을 가져 오려고하면 null으로 돌아오고 있습니다. 왜 이것이 사실인지 도움이 될 것입니다! 또한 CameraDetector를 사용하고 있습니다.affdex frame.getOriginalBitmapFrame()은 카메라 피드를 분석 할 때 null을 반환합니다.

@Override 
public void onImageResults(List<Face> faces, Frame frame, float v) { 
    if (faces == null|| frame == null) 
     return; //frame was not processed 

    if (faces.size() == 0) 
     overlayView.adjustFaces(null, null); 
    //final Bitmap b = Bitmap.createBitmap(cameraView.getMeasuredWidth(), cameraView.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 

    overlayView.adjustFaces(faces, frame); 

    final Bitmap frameF = frame.getOriginalBitmapFrame(); 
    final List<Face> facesF = faces; 

    extractorThread.addToRunnableQueue(new Runnable() { 
     @Override 
     public void run() { 
      float data = regionVal(facesF, frameF); 
      System.out.println(data); 
      extractorThread.updateBuffer(data); 
      extractorThread.computeHR(); 
     } 
    }); 
} 

내가 얻는 frameF 비트 맵은 항상 null이고, 나는 프레임이 BitmapFrame 경우

답변

1

getOriginalBitmapFrame()는 비트 맵을 반환 이유를 잘 모릅니다. Frame이 ByteArrayFrame 인 경우 null을 반환합니다.

카메라의 onPreviewFrame 콜백은 바이트 배열을 제공하므로 CameraDetector는 ByteArrayFrames와 함께 작동합니다. 따라서 getByteArray()을 통해 이미지 데이터를 가져올 수 있습니다.