我之前用 OpenCV 做过一些事情,我的解决方案是:
- 通过平台通道分别在 Android 和 iOS 上启动一个新的 Activity 或 ViewController。例子:
class FaceScanPlugin(val activity: Activity) : MethodCallHandler, PluginRegistry.ActivityResultListener {
var result: Result? = null
companion object {
@JvmStatic
fun registerWith(registrar: Registrar): Unit {
val channel = MethodChannel(registrar.messenger(), "com.example.facescan")
val plugin = BarcodeScanPlugin(registrar.activity())
channel.setMethodCallHandler(plugin)
registrar.addActivityResultListener(plugin)
}
}
override fun onMethodCall(call: MethodCall, result: Result): Unit {
if (call.method.equals("scan")) {
this.result = result
showFaceScanView()
} else {
result.notImplemented()
}
}
private fun showFaceScanView() {
val intent = Intent(activity, FaceScannerActivity::class.java)
activity.startActivityForResult(intent, 100)
}
override fun onActivityResult(code: Int, resultCode: Int, data: Intent?): Boolean {
if (code == 100) {
if (resultCode == Activity.RESULT_OK) {
return true
}
}
return false
}
}
有关如何导航到 Android 活动或 iOS 视图的信息,请参阅Flutter QR 扫描仪插件。
- 然后通过Camera2和AVFoundation进行 OpenCV 实时人脸检测。
除此之外,如果您想将 android 或 iOS 嵌入到 Flutter 应用程序中,我想您可以尝试新的AndroidView或UIKitView 。