私はこの単純な機能を得ました
private PointF getFaceCenter(Bitmap faceBitmap){
PointF faceCenter = new PointF(faceBitmap.getWidth() / 2, faceBitmap.getHeight() / 2);
Face[] faces = new Face[1];
mFaceDetector = new FaceDetector(
faceBitmap.getWidth(), faceBitmap.getHeight(), 1);
int detected = mFaceDetector.findFaces(faceBitmap, faces);
if (detected > 0) {
faces[0].getMidPoint(faceCenter);
}
return faceCenter;
}
私は自分の絵をどこに描くべきかを知ることができるように、顔の中心を得るためにそれを使用します. 再描画中に UI スレッドが常に動かなくなることに気付きました..
だから私はこの計算をに配置しましたonMeasure
が、それでもonMeasure
呼び出されるたびにUIが遅くなります..
プロファイリングを開始しました:
mFaceDetector.findFaces
100%のCPU時間がかかるのを見ました!! 顔検出コードを削除したところ、アプリが超高速で動作するようになりました。
私が間違っていることはありますか?
回避策はありますか?