使用 flutter 进行实时图像处理
Live image processing using flutter
我有一个项目,我将在其中开发一个使用 Flutter 的应用程序。该应用程序需要人脸识别和实时图像处理。它类似于 Instagram 故事,应用程序可以实时修改图像,例如更改背景或覆盖一些文本等。
我就想问问有没有办法做到这一点?或者如果有,我可以使用哪些东西(库、指南或先决条件)来开发这样的应用程序。我已经在 google 上搜索了,但我只得到了很少的结果,而且它们对我来说都有点难以理解或难以理解。
由于flutter比较新,目前还没有一个固定的实时图像处理方式。如果你只需要使用 firebase ML 视觉,你可以使用这个插件:https://pub.dev/packages/firebase_livestream_ml_vision
但是,如果您需要更具体的内容,我建议您使用方法通道和 运行 一些特定于平台的代码。特别是,如果您正在为 android 开发,我建议您看一下 CameraX 库。
我给你举个例子,说明我是如何用它来检索条形码的
void _launchCameraX(BuildContext context) async {
String result = await MethodChannel("CAMERA_X").invokeMethod('SCAN');
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => NewPage(result),
),
);
在android主activity:
private final static String CAMERA_X_CHANNEL = "CAMERA_X";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getComponents();
setUpResultsHandlers();
new MethodChannel(getFlutterView(), CAMERA_X_CHANNEL).setMethodCallHandler((call, result) -> {
if (call.method.equals(SCAN_METHOD)) {
Intent intent = new Intent(this, ScannerActivity.class);
this.result = result;
startActivityForResult(intent, qrRequestCode);
}
});
GeneratedPluginRegistrant.registerWith(this);
}
//然后我使用相机 X
我有一个项目,我将在其中开发一个使用 Flutter 的应用程序。该应用程序需要人脸识别和实时图像处理。它类似于 Instagram 故事,应用程序可以实时修改图像,例如更改背景或覆盖一些文本等。
我就想问问有没有办法做到这一点?或者如果有,我可以使用哪些东西(库、指南或先决条件)来开发这样的应用程序。我已经在 google 上搜索了,但我只得到了很少的结果,而且它们对我来说都有点难以理解或难以理解。
由于flutter比较新,目前还没有一个固定的实时图像处理方式。如果你只需要使用 firebase ML 视觉,你可以使用这个插件:https://pub.dev/packages/firebase_livestream_ml_vision
但是,如果您需要更具体的内容,我建议您使用方法通道和 运行 一些特定于平台的代码。特别是,如果您正在为 android 开发,我建议您看一下 CameraX 库。
我给你举个例子,说明我是如何用它来检索条形码的
void _launchCameraX(BuildContext context) async {
String result = await MethodChannel("CAMERA_X").invokeMethod('SCAN');
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => NewPage(result),
),
);
在android主activity:
private final static String CAMERA_X_CHANNEL = "CAMERA_X";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getComponents();
setUpResultsHandlers();
new MethodChannel(getFlutterView(), CAMERA_X_CHANNEL).setMethodCallHandler((call, result) -> {
if (call.method.equals(SCAN_METHOD)) {
Intent intent = new Intent(this, ScannerActivity.class);
this.result = result;
startActivityForResult(intent, qrRequestCode);
}
});
GeneratedPluginRegistrant.registerWith(this);
}
//然后我使用相机 X