我正在尝试制作一个相机应用程序,它使用带有自定义相机实例的谷歌移动视觉 API 来检测人脸,这与谷歌 API 中的“CameraSource”不同,因为我也在处理帧以检测颜色,而使用 Camerasource 我不是允许获取相机帧。
搜索此问题后,我发现的唯一结果是关于将移动视觉与它的 CameraSource 一起使用,而不是与任何自定义 camera1 API 一起使用。我试图覆盖帧处理,然后对输出的图片进行检测,如下所示:
camera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d("onPreviewFrame", "" + data.length);
Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
ByteArrayOutputStream outstr = new ByteArrayOutputStream();
Rect rect = new Rect(0, 0, width, height);
YuvImage yuvimage = new YuvImage(data, ImageFormat.NV21, width, height, null);
yuvimage.compressToJpeg(rect, 20, outstr);
Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
detector = new FaceDetector.Builder(getApplicationContext())
.setTrackingEnabled(true)
.setClassificationType(FaceDetector.ALL_LANDMARKS)
.setMode(FaceDetector.FAST_MODE)
.build();
detector.setProcessor(
new MultiProcessor.Builder<>(new GraphicFaceTrackerFactory())
.build());
if (detector.isOperational()) {
frame = new Frame.Builder().setBitmap(bmp).build();
mFaces = detector.detect(frame);
// detector.release();
}
}
});
那么有什么方法可以将移动视觉与我的相机实例链接起来,以便进行帧处理并用它来检测人脸?你可以在这里看到我到目前为止所做的事情: https ://github.com/etman55/FaceDetectionSampleApp
**新更新
在找到 CameraSource 类的开源文件后,我解决了大部分问题,但现在在尝试检测面部时,检测器会正确接收帧但它无法检测到任何内容>>您可以在 github 存储库中看到我的最后一次提交。