我想在录制视频时检测人脸,并想用叠加贴纸保存视频。
目前,我正在使用 Firebase ml-kit 进行人脸检测 https://github.com/firebase/quickstart-android/tree/master/mlkit/app
我能够在实时摄像头上检测到人脸。但是如果我启动 MediaRecorder 类来录制视频,相机就会冻结。
mMediaRecorder = new MediaRecorder();
cameraSource.unLockCamera();
mMediaRecorder.setCamera(cameraSource.getCamera());
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
CamcorderProfile mProfile=CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
mMediaRecorder.setProfile(mProfile);
Run Code Online (Sandbox Code Playgroud)
有人给我一些建议吗?提前致谢。
我正在尝试使用Firebase MLKit OCR我的图像,但它失败并返回错误
文本检测失败并显示错误:无法运行文本检测器,因为self为零.
/// Detects texts on the specified image and draws a frame for them.
func detectTexts() {
let image = #imageLiteral(resourceName: "testocr")
// Create a text detector.
let textDetector = vision.textDetector() // Check console for errors.
// Initialize a VisionImage with a UIImage.
let visionImage = VisionImage(image: image)
textDetector.detect(in: visionImage) { (features, error) in
guard error == nil, let features = features, !features.isEmpty else {
let errorString = error?.localizedDescription ?? "No results returned."
print("Text detection failed with …Run Code Online (Sandbox Code Playgroud) 开始使用前置摄像头玩MLKit面部检测器,但是在处理面部时确实很慢
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
print("Picture at ", Date())
let visionImage = VisionImage(buffer: sampleBuffer)
visionImage.metadata = metadata
faceDetector?.detect(in: visionImage) { (faces, error) in
guard error == nil, let faces = faces, !faces.isEmpty else {
// Error. You should also check the console for error messages.
let errorString = error?.localizedDescription
print("Face detection failed with error: \(errorString)")
return
}
}
Run Code Online (Sandbox Code Playgroud)
我要去哪里错了?
我是移动开发人员。我想用各种Tensorflow精简版机型(.tflite含)MLKit。
但是有一些问题,我不知道如何知道.tflite模型的输入/输出功能信息(这些将是设置参数)。
有什么办法知道吗?
对不起,英语不好,谢谢。
更新(18.06.13。):
我找到了这个网站https://lutzroeder.github.io/Netron/。这可以根据您上载的模型(如.mlmode或类似模型.tflite)可视化图形并查找输入/输出形式。
这是示例屏幕截图! https://lutzroeder.github.io/Netron示例
machine-learning deep-learning tensorflow-lite firebase-mlkit
我得到Cannot resolve symbol FirebaseVisionTextDetector的错误,当我把我的模块中:
import com.google.firebase.ml.vision.text.FirebaseVisionTextDetector;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,因为gradle我有正确的实现:
implementation 'com.google.firebase:firebase-ml-vision:18.0.1'
Run Code Online (Sandbox Code Playgroud)
解决了
我已通过降级到来解决16.0.0。仍然不知道为什么。
implementation 'com.google.firebase:firebase-ml-vision:16.0.0'
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在图像顶部绘制 Firebase ML Kit 识别的文本框。目前,我还没有成功,我根本看不到任何框,因为它们都显示在屏幕外。我正在查看这篇文章以供参考:https://medium.com/swlh/how-to-draw-bounding-boxes-with-swiftui-d93d1414eb00以及该项目: https: //github.com/firebase /quickstart-ios/blob/master/mlvision/MLVisionExample/ViewController.swift
这是应显示框的视图:
struct ImageScanned: View {
var image: UIImage
@Binding var rectangles: [CGRect]
@State var viewSize: CGSize = .zero
var body: some View {
// TODO: fix scaling
ZStack {
Image(uiImage: image)
.resizable()
.scaledToFit()
.overlay(
GeometryReader { geometry in
ZStack {
ForEach(self.transformRectangles(geometry: geometry)) { rect in
Rectangle()
.path(in: CGRect(
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height))
.stroke(Color.red, lineWidth: 2.0)
}
}
}
)
}
}
private func transformRectangles(geometry: GeometryProxy) -> …Run Code Online (Sandbox Code Playgroud) 应用程序具有 ML Kit 功能(翻译)。我试图通过引入动态模块功能、按需加载来减小应用程序的大小。
遵循本指南 将 'com.google.mlkit:playstore-dynamic-feature-support:16.0.0-beta1' 添加到基础 apk 的 build.gradle
com.google.mlkit:translate:16.1.2 在功能模块 build.gradle 中,
一切都会编译并尝试在模拟器上运行,但不幸的是应用程序从日志启动时崩溃
java.lang.RuntimeException: Unable to get provider com.google.mlkit.common.internal.MlKitInitProvider: com.google.firebase.components.MissingDependencyException: Unsatisfied dependency for component Component<[class com.google.android.gms.internal.mlkit_translate.zzxa]>{0, type=0, deps=[Dependency{anInterface=class com.google.mlkit.common.sdkinternal.SharedPrefManager, type=required, injection=direct}, Dependency{anInterface=class com.google.android.gms.internal.mlkit_translate.zzwx, type=required, injection=direct}]}: class com.google.mlkit.common.sdkinternal.SharedPrefManager
Caused by: com.google.firebase.components.MissingDependencyException: Unsatisfied dependency for component Component<[class com.google.android.gms.internal.mlkit_translate.zzxa]>{0, type=0, deps=[Dependency{anInterface=class com.google.mlkit.common.sdkinternal.SharedPrefManager, type=required, injection=direct}, Dependency{anInterface=class com.google.android.gms.internal.mlkit_translate.zzwx, type=required, injection=direct}]}: class com.google.mlkit.common.sdkinternal.SharedPrefManager
Run Code Online (Sandbox Code Playgroud)
哪一种没有意义。因为我添加了 playstore-dynamic-feature-support。
我有适用于Android的移动应用。我需要在我的应用程序中处理图像。这是示例图像:
这是带标记的桌子的照片。我需要找到这些标记及其位置。可以进行测试吗?ML Kit for Firebase是否可以使用?
如果是,我应该使用哪个API?如有任何建议,我将不胜感激。
我想使用 Google ML Kit 和 CameraX API 制作实时图像分类器。我正在使用 CameraX API 的预览和分析。它给出的错误为
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: Caused by: java.lang.IllegalStateException: Image is already closed
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at android.media.Image.throwISEIfImageIsInvalid(Image.java:68)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at android.media.ImageReader$SurfaceImage$SurfacePlane.getBuffer(ImageReader.java:832)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.ImageConvertUtils.zza(com.google.mlkit:vision-common@@16.0.0:139)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.ImageConvertUtils.convertToUpRightBitmap(com.google.mlkit:vision-common@@16.0.0:89)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.ImageConvertUtils.getUpRightBitmap(com.google.mlkit:vision-common@@16.0.0:10)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.label.automl.internal.zzo.zza(com.google.mlkit:image-labeling-automl@@16.0.0:16)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.label.automl.internal.zzo.run(com.google.mlkit:image-labeling-automl@@16.0.0:60)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.MobileVisionBase.zza(com.google.mlkit:vision-common@@16.0.0:23)
2020-07-27 01:17:18.146 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.zzb.call(com.google.mlkit:vision-common@@16.0.0)
2020-07-27 01:17:18.146 11009-11009/com.example.camerax_automl W/System.err: …Run Code Online (Sandbox Code Playgroud) 在这里,我需要裁剪检测到的面孔并保存为图像/文件。我能够用圆角矩形检测脸部。如何裁剪检测到的人脸区域?我正在使用 flutter_firebase_ml_kit 来检测人脸。这是我的代码:
getImageAndDetectFaces() async {
setState(() {
isLoading = true;
});
final image = FirebaseVisionImage.fromFile(widget.cardImage);
final faceDetector = FirebaseVision.instance.faceDetector(
FaceDetectorOptions(
mode: FaceDetectorMode.fast,
enableLandmarks: true
)
);
List<Face> faces = await faceDetector.processImage(image);
if (mounted) {
setState(() {
_faces = faces;
_loadImage(widget.cardImage);
});
}
}
_loadImage(File file) async {
final data = await file.readAsBytes();
await decodeImageFromList(data).then(
(value) => setState(() {
img = value;
isLoading = false;
}),
);
}
class FacePainter extends CustomPainter {
final ui.Image image;
final List<Face> faces;
final …Run Code Online (Sandbox Code Playgroud) firebase-mlkit ×10
android ×5
firebase ×4
flutter ×2
google-mlkit ×2
swift ×2
bounding-box ×1
camera ×1
cgrect ×1
ios ×1
ocr ×1
swiftui ×1