2012-12-10 31 views
3

我正在開發適用於Android OS的應用程序,它可以幫助您使用相機進行繪製。應用程序的工作方式是從相機槽onPreviewFrame(byte[] data, Camera camera)中捕獲幀,並從這裏將圖片轉換爲二進制黑/白。在一般的應用程序的作品,但我有以下問題:當我移動手機時的圖像穩定 - Android

  1. 捕獲圖像槽onPreviewFrame真的很慢。現在我跳過幀但方法仍然很慢。

    YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, width, height, null); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    yuvImage.compressToJpeg(new Rect(0,0,width, height), 100, baos); 
    byte [] imageData = baos.toByteArray(); 
    Bitmap bmp = BitmapFactory.decodeByteArray(imageData , 0, imageData .length); 
    bmp = Bitmap.createScaledBitmap(bmp, surfaceView.getMeasuredHeight(), surfaceView.getMeasuredWidth(), false); 
    Bitmap bmps = ImageHelper.rotate(bmp, kot); 
    

    有什麼辦法讓圖片更快?

  2. 我也注意到,雖然手機完全靜止而且光線相同,但我還是發現每個幀的picutre都不一樣(不同的直方圖)。

+0

相關問題:-http://stackoverflow.com/questions/5634053/processing-android-camera-frames-in-real-time –

+0

是的,但不一樣... –

+0

我是你在'onPreviewFrame()'方法中做了很多操作,你的手機在測試它的規格是什麼? –

回答

0

我想你應該使用NDK指出。您可能還想在另一個線程上執行這種類型的處理,而不是在主線程中。

小點關於你的(2)。直方圖有多不同?大多數相機傳感器和處理會有所不同,由於3A算法中的噪聲和變化,很難生成精確的直方圖。

相關問題