[英]take picture when face detected using FaceDetector google-vision
[英]android custom facedetector capture frame only if face is detected
我正在使用新的視覺API來檢測相機流中的面部。 如果檢測到新面孔,我將通過自定義FaceDetector類捕獲圖像(如該線程中所述: Mobile Vision API-連接新的檢測器對象以繼續進行幀處理 )
class MyFaceDetector extends Detector<Face> {
private Detector<Face> mDelegate;
MyFaceDetector(Detector<Face> delegate) {
mDelegate = delegate;
}
public SparseArray<Face> detect(Frame frame) {
int width = frame.getMetadata().getWidth();
int height = frame.getMetadata().getHeight();
YuvImage yuvImage = new YuvImage(frame.getGrayscaleImageData().array(), ImageFormat.NV21, width, height, null);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, byteArrayOutputStream);
byte[] jpegArray = byteArrayOutputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegArray, 0, jpegArray.length);
GraphicHolder.faceImage = bitmap;
return mDelegate.detect(frame);
}
public boolean isOperational() {
return mDelegate.isOperational();
}
public boolean setFocus(int id) {
return mDelegate.setFocus(id);
}
}
我的問題是,每次檢測函數被調用時,這都會創建一個位圖。 這不僅是在識別出新面孔時。 就我而言,這是不需要的,它將使用不必要的資源,我希望避免這些資源。
有什么方法可以更改此設置,以便僅在檢測到面部時才創建位圖?
我將使用相同的方法,但不確定使用的代碼是否正確:
FaceDetector faceDetector = new FaceDetector.Builder(context)
.build();
MyFaceDetector myFaceDetector = new MyFaceDetector(faceDetector);
myFaceDetector.setProcessor(/* include your processor here */);
mCameraSource = new CameraSource.Builder(context, myFaceDetector)
.build();
您在其中寫了什么:/ *在此處包括處理器* /? 提前致謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.