2017-08-03 2 views
0

ヘルプが必要です! 私はこのコードを持っています。 68を描いてカメラプレビューで見るにはどうすればいいですか?リアルタイム画像よりランドマークポイントを描く方法

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { 
     rgba = inputFrame.rgba(); 
     try { 
      Bitmap bmp = matToBitmap(rgba); 
      points = getLandmark(bmp, this, predictorPath); // getting 68 points 

      drawPoints(bmp, points); 

     } catch (Exception e) { 
      Log.i(TAG, "bitmap error! " + e.getMessage()); 
     } 
     return rgba; 
    } 

EDIT:追加この方法ではなく、何も

public void drawPoints(Bitmap bitmap, List<Point> points) { 

     Canvas canvas = new Canvas(bitmap); 

     Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paint.setColor(Color.RED); 
     float radius = 4f; 

     // draw points 
     for(Point point : points) { 
      canvas.drawCircle(point.x, point.y, radius, paint); 
     } 
    } 
+0

https://stackoverflow.com/a/24038899/1848157これを参照してください。 – Radhey

答えて

0

Canvasクラスの助けを借りて、ビットマップ上にポイントを描くことができます。例:

public void drawPoints(Bitmap bitmap, List<Point> points) { 
    // a canvas for drawing on the bitmap 
    Canvas canvas = new Canvas(bitmap); 
    // a paint to describe how points are drawn 
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    paint.setColor(Color.RED); 
    float radius = 4f; 

    // draw points 
    for(Point point : points) { 
     canvas.drawCircle(point.x, point.y, radius, paint); 
    } 
    // the bitmap has now been updated 
} 

これは、あなたがポイントを受け取ると、あなたはポイントが(サイズ、色などを形作る)表示する方法をどのように応じて変更することができます。
ライブ描画では、Paintオブジェクトをキャッシュすることができます。

+0

私はライブ図面が必要です。私を助けて、ペイントオブジェクトをキャッシュする方法を私に説明できますか?今では私のコードにメソッドを追加しますが、何もありません。 –

+0

これはBitmapで描画していますが、何もしません。たとえば、プレビューサーフェスの上にImageViewでレンダリングする必要があります。 – RobCo

+0

また、OpenCVのMatオブジェクトに直接描画することもできます。おそらく、Java APIのどこかにあるはずの[circle](http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#circle)メソッド(私はどのクラス正確には、いくつかの静的メソッドです)。ビットマップ全体をドロップすることができますが、最初にレンダリングする方法にも依存します。 – RobCo

0

を起こりませんが、ビットマップ上で何かを描画するキャンバスを使用するようにしてください。 Hereこれについて詳しくは、こちらをご覧ください。

関連する問題