4

dart:ffi を使用して実行する予定のカスタム C++ コードに画像を送信しようとしています。2 つの整数を送信し、そのうちのいくつかを別の整数として取得する 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();

Uint8List私の問題は、 C++ コードにa を送信して を取得するルックアップ関数をどのように定義すればよいかということです。C++ を介した私の関数は、パラメーターとして (整数の配列を受け取るように微調整できます)List<bool>期待し、ブール値のベクトルを送信します。cv::mat

これは私が試したものです

final List<bool> Function(Uint8List image) _imageToCode = nativeAddLib
.lookup<NativeFunction<List<bool> Function(List<Uint8List>)>>("imageToCode")
.asFunction();

問題は、bool と Uint8List が C++ でサポートされている型ではないため、関数がそれらを認識しないことです。チャネル経由で送信するにはどうすればよいですか。

4

1 に答える 1