質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

2846閲覧

androidで、camera2で顔認識をしたいのにできません。助けてください。

giant

総合スコア132

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/09/15 08:05

編集2017/09/15 08:35

java

1 2 3public class PlayerActivity extends Activity implements OnClickListener, ExoPlayer.EventListener 4{ 5 //canvassは、画面にfacelineを書き込むためのやつ 6 Canvas canvass; 7 private AutoFitTextureView mTextureView; 8 private CameraFaceLineTextureView mCameraTextureView; 9 10 11 private TextureView.SurfaceTextureListener mSurfaceTextureListener 12 = new TextureView.SurfaceTextureListener() { 13 14 @Override 15 public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, 16 int width, int height) { 17 } 18 19 @Override 20 public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, 21 int width, int height) { 22 configureTransform(width, height); 23 } 24 25 @Override 26 public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) { 27 return true; 28 } 29 30 @Override 31 public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { 32 } 33 34 }; 35 36 37 38 private TextureView.SurfaceTextureListener mCameraSurfaceTextureListener 39 = new TextureView.SurfaceTextureListener() { 40 41 @Override 42 public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, 43 int width, int height) { 44 } 45 46 @Override 47 public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, 48 int width, int height) { 49 configureTransform(width, height); 50 canvass=mCameraTextureView.lockCanvas(); 51 } 52 53 @Override 54 public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) { 55 return true; 56 } 57 58 @Override 59 public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { 60 } 61 62 }; 63 64 65 private CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() { 66 67 @Override 68 public void onOpened(@NonNull CameraDevice cameraDevice) { 69 70 } 71 }; 72 73 74 private CaptureRequest.Builder mPreviewBuilder; 75 76 public void onCreate(Bundle savedInstanceState) { 77 super.onCreate(savedInstanceState); 78 79 setContentView(R.layout.player_activity); 80 mTextureView = (AutoFitTextureView) findViewById(R.id.texture); 81 mCameraTextureView = (CameraFaceLineTextureView) findViewById(R.id.texture2); 82 83 @Override 84 public void onResume() { 85 super.onResume(); 86 mTextureView.setSurfaceTextureListener(mSurfaceTextureListener); 87 mCameraTextureView.setSurfaceTextureListener(mCameraSurfaceTextureListener); 88 } 89 90 91 private void startPreview() { 92 93 //多分ここの作業が足りてなかった 94 try { 95 SurfaceTexture texture = mTextureView.getSurfaceTexture(); 96 assert texture != null; 97 texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()); 98 mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 99 Surface previewSurface = new Surface(texture); 100 mPreviewBuilder.addTarget(previewSurface); 101 102 mCameraDevice.createCaptureSession(Collections.singletonList(previewSurface), 103 new CameraCaptureSession.StateCallback() { 104 105 @Override 106 public void onClosed(CameraCaptureSession session) { 107 } 108 109 @Override 110 public void onReady(CameraCaptureSession session) { 111 } 112 113 @Override 114 public void onConfigured(@NonNull CameraCaptureSession session) { 115 mPreviewSession = session; 116 } 117 118 }, mBackgroundHandler); 119 } catch (CameraAccessException e) { 120 } 121 } 122 123 private void startPreview2() { 124 125 //多分ここの作業が足りてなかった 126 try { 127 SurfaceTexture texture = mCameraTextureView.getSurfaceTexture(); 128 assert texture != null; 129 texture2.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()); 130 mCameraPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 131 Surface previewCameraSurface = new Surface(texture2); 132 mCameraPreviewBuilder.addTarget(previewCameraSurface); 133 134 mCameraDevice.createCaptureSession(Collections.singletonList(previewCameraSurface), 135 new CameraCaptureSession.StateCallback() { 136 137 @Override 138 public void onClosed(CameraCaptureSession session) { 139 } 140 141 @Override 142 public void onReady(CameraCaptureSession session) { 143 } 144 145 @Override 146 public void onConfigured(@NonNull CameraCaptureSession session) { 147 mCameraPreviewSession = session; 148 } 149 150 }, mBackgroundHandler); 151 } catch (CameraAccessException e) { 152 } 153 } 154 155 156 private void startRecordingVideo() { 157 if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) { 158 return; 159 } 160 try { 161 SurfaceTexture texture = mTextureView.getSurfaceTexture(); 162 assert texture != null; 163 texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()); 164 165 mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD); 166 List<Surface> surfaces = new ArrayList<>(); 167 168 // Set up Surface for the camera preview 169 Surface previewSurface = new Surface(texture); 170 surfaces.add(previewSurface); 171 mPreviewBuilder.addTarget(previewSurface); 172 173 // Set up Surface for the MediaRecorder 174 Surface recorderSurface = mMediaRecorder.getSurface(); 175 surfaces.add(recorderSurface); 176 mPreviewBuilder.addTarget(recorderSurface); 177 178 // Start a capture session 179 // Once the session starts, we can update the UI and start recording 180 mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() { 181 182 @Override 183 public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) { 184 185 mPreviewSession = cameraCaptureSession; 186 } 187 }, mBackgroundHandler); 188 } catch (CameraAccessException | IOException e) { 189 } 190 191 } 192 193 194 private CameraCaptureSession.CaptureCallback mCaptureCallback 195 = new CameraCaptureSession.CaptureCallback() { 196 197 private void process(CaptureResult result) { 198 Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE); 199 Face[] faces = result.get(CaptureResult.STATISTICS_FACES); 200 if (faces != null && mode != null) 201 202 for(Face face: faces) { 203 204 Rect r=faceRect2PixelRect(face); 205 drawFace(r,Color.argb(255, 255, 0, 255)); 206 } 207 Log.e("tag", "faces : " + faces.length + " , mode : " + mode); 208 } 209 210 @Override 211 public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, 212 CaptureResult partialResult) { 213 process(partialResult); 214 } 215 216 @Override 217 public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, 218 TotalCaptureResult result) { 219 process(result); 220 } 221 }; 222 223 224 private Paint paint = new Paint(); 225 public void drawFace(Rect rect1, int color) { 226 227 try { 228 if (canvass != null) { 229 try { 230 canvass.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 231 paint.setColor(color); 232 canvass.drawRect(rect1,paint); 233 } finally { 234 mCameraTextureView.unlockCanvasAndPost(canvass); 235 } 236 } 237 } catch (IllegalArgumentException e) { 238 } 239 } 240 241 private Rect faceRect2PixelRect(Face face) { 242 int w = mCameraTextureView.getWidth(); 243 int h = mCameraTextureView.getHeight(); 244 Rect r=face.getBounds(); 245 r.left = w * (-r.top + 1000) / 2000; 246 r.right = w * (-r.bottom + 1000) / 2000; 247 r.top = h * (-r.left + 1000) / 2000; 248 r.bottom = h * (-r.right + 1000) / 2000; 249 return r; 250 } 251} 252 253

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yona

2017/09/15 08:27 編集

丸投げはダメですね。お金を出して誰かに依頼したらいいと思いますよ。
giant

2017/09/15 08:25

すみません。解決せず雑になっていました。コメントをまとめて修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問