我正在尝试将图像发送到我计划使用 dart:ffi 运行的自定义 C++ 代码。我已经成功运行了 hello world 问题,我发送了两个整数并将其中的一些作为另一个整数。
现在我想向它发送整个图像并在我的 C++ 代码上处理它。我可以Uint8List
使用CameraImage
下面的代码
Future<ui.Image> convertCameraImageToUiImage(CameraImage image) async {
imglib.Image libImage = imglib.Image.fromBytes(
image.width,
image.height,
image.planes[0].bytes,
format: imglib.Format.bgra,
);
final c = Completer<ui.Image>();
ui.decodeImageFromPixels(
libImage.getBytes(),
image.width,
image.height,
ui.PixelFormat.rgba8888,
c.complete,
);
return c.future;
}
然后我将其转换为Uint8List
ByteData data = await image.toByteData();
Uint8List bytes = data.buffer.asUint8List();
我的问题是,我应该如何定义查找函数以将 a 发送Uint8List
到 C++ 代码并获取List<bool>
,我的 C++ 函数期望cv::mat
(我可以调整它以接收整数数组)作为参数并发送布尔向量。
这是我尝试过的
final List<bool> Function(Uint8List image) _imageToCode = nativeAddLib
.lookup<NativeFunction<List<bool> Function(List<Uint8List>)>>("imageToCode")
.asFunction();
问题是,bool 和 Uint8List 不是 C++ 支持的类型,因此该函数无法识别它们。我应该如何通过频道发送它。