SurfaceView to Bitmap - PullRequest
       4

SurfaceView to Bitmap

3 голосов
/ 26 сентября 2010

Я пытаюсь преобразовать свой SurfaceView (предварительный просмотр камеры) в растровое изображение для обнаружения лица на лету.Я получаю ненулевое изображение, но когда я отображаю его на виде, оно кажется черным.Любые идеи, что может быть причиной и как действовать?

(я считаю, что это трудно, но не невозможно извлечь растровое изображение из SurfaceView - но никто не опубликовал никакого решения)

class BackgroundView extends SurfaceView implements SurfaceHolder.Callback {


        public BackgroundView(Context context) {
            super(context);

                    // ...

            setDrawingCacheEnabled(true);
        }


        // ...
    }

    private Runnable update = new Runnable() {
        public void run() {

                    // Following statement is sending a black/blank image
            faceView.updateFaces(backgroundView.getDrawingCache());
            mHandler.postDelayed(update, (long) (1000));
        }
    };

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Я получил его для работы с PreviewCallback:

public void onPreviewFrame (byte [] _data, Camera _camera) {

    // data = byte array of the camera preview

}

0 голосов
/ 12 октября 2010

У меня похожая проблема при попытке получить видеокадры из VideoView. Я пробовал все виды комбинаций этих флагов:

   vids[i] = new VideoView(this);
   vids[i].setDrawingCacheEnabled(true);
   vids[i].setWillNotCacheDrawing(false);
   vids[i].setWillNotDraw(false);

... (позже в цикле draw () другого представления *

curFrame = vids[0].getDrawingCache();
if (curFrame != null) {
   canvas.drawBitmap(curFrame, null, new RectF(10,y,50,y+50), null);
}

Но растровое изображение curFrame, хотя и не нулевое, имеет ширину и высоту -1 в отладчике. Это может быть какая-то реализация DRM или что-то в этом роде, или просто ограничение декодера, но я не думаю, что возможно получить пиксели видео. Возможно, вам больше повезет с вашей камерой - пробовали ли вы поиграть с setWillNotCacheDrawing ()? Дайте мне знать, если это сработает, потому что это был мой запасной план!

...