Ram*_*mri 5 ios dart ios-camera swift flutter
我正在开发一个自定义颤振插件,我将颤振图像相机发送到 swift 并使用颤振相机插件(https://pub.dev/packages/camera)创建一个 UIImage 。为此,我使用此方法发送相机图像字节:
startImageStream((CameraImage img) {
sendFrameBytes(bytesList: img.planes.map((plane) {
return plane.bytes;
}).toList(),
)}
Run Code Online (Sandbox Code Playgroud)
平面包含一个数组,其中包含图像的 RGBA 字节。在 swift 代码中,我将 RGBA 字节作为 NSArray 并创建一个像这样的 UIImage:
func detectFromFrame1(args:NSDictionary, result:FlutterResult){
var rgbaPlan = args["bytesList"] as! NSArray
let rgbaTypedData = rgbaPlan[0] as! FlutterStandardTypedData
let rgbaUint8 = [UInt8](rgbaTypedData.data)
let data = NSData(bytes: rgbaUint8, length: rgbaUint8.count)
let uiimage = UIImage(data: data as Data)
print(uiimage)
}
Run Code Online (Sandbox Code Playgroud)
问题是rgbaTypedData,rgbaUint8,data不为空,创建的uiimage总是nil,不明白问题出在哪里。
小智 -1
我有同样的问题。我使用的解决方法是在 flutter 中将图像转换为 jpg,然后获取字节并将其提供给 iOS/本机代码。缺点是速度慢且无法实时使用
更新:代码示例(Flutter 和 TFLite 包)包: https://pub.dev/packages/image和 https://pub.dev/packages/tflite
代码:
_cameraController.startImageStream((_availableCameraImage)
{
imglib.Image img = imglib.Image.fromBytes(_availableCameraImage.planes[0].width, _availableCameraImage.planes[0].height, _availableCameraImage.planes[0].bytes);
Uint8List imgByte = imglib.encodeJpg(img);
Tfliteswift.detectObjectOnBinary(binary: _availableCameraImage.planes[0].bytes);
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |