UNPKG

imobile_for_reactnative

Version:

iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。

230 lines (199 loc) 6.19 kB
import EventConst from "imobile_for_reactnative/NativeModule/constains/EventConst" import { EmitterSubscription } from "react-native" import { NativeModules, NativeEventEmitter, } from "react-native" const SAI = NativeModules.SAI const event = new NativeEventEmitter(SAI) /** AI模型信息 */ interface AIModelInfo { /** tflite 格式的ai模型所在绝对路径 */ modelPath: string /** 模型能识别对象标签文本文件所在绝对路径 */ labelPath: string /** 指定模型所用的参数 */ param?: { /** 模型支持的图像输入尺寸 */ inputSize?: number /** 模式是否量化 */ quantized?: boolean } } /** AI识别信息结果 */ export interface AIDetectInfo { /** 识别对象名称 */ label: string, /** 识别对象置信度 */ confidence: number, /** 识别对象计数 */ countID: number, } /** AI识别框风格 */ export interface AIDetectStyle { /** 是否显示名称 */ isDrawTitle: boolean /** 是否显示置信度 */ isDrawConfidence: boolean /** 是否显示识别计数 */ isDrawCount: boolean /** 线宽度 */ aiStrokeWidth: number } /** AI分类信息结果 */ export interface AIClassifyResult { /** 识别对象名称 */ label: string, /** 识别对象置信度 */ confidence: number, } // **************************************************************************** // AI 识别,聚合 // **************************************************************************** /** * 设置识别模型 * @param model 模型路径,参数等信息 * @returns 是否成功 */ export async function setAIDetectModel(model: AIModelInfo): Promise<boolean> { return await SAI.setAIDetectModel(model) } /** * 加载默认识别模型 * @param language 默认模型使用的语言,支持中文(’CN‘)和英文(’OTHER') * @returns 是否成功 */ export async function setAIDetectDefaultModel(language: string): Promise<boolean> { return await SAI.setAIDetectDefaultModel(language) } /** * 开始识别 * @param isPolymerize 是否是聚合模式 * @returns 是否成功 * @throws 许可异常 */ export async function startAIDetect(isPolymerize: boolean): Promise<boolean> { return await SAI.startAIDetect(isPolymerize) } /** * 结束识别 * @returns 是否成功 */ export async function endAIDetect(): Promise<boolean> { return await SAI.endAIDetect() } /** * 获取当前识别出的结果 * @returns AI识别信息结果数组 */ export async function getAIDetectInfos(): Promise<AIDetectInfo[]> { return await SAI.getAIDetectInfos() } /** * 设置识别框的风格 * @param style 识别框风格 * @returns 是否成功 */ export async function setAIDetectStyle(style: Partial<AIDetectStyle>): Promise<boolean> { return await SAI.setAIDetectStyle(style) } /** * 获取识别框风格 * @returns 识别框风格 */ export async function getAIDetectStyle(): Promise<AIDetectStyle | undefined | null> { return await SAI.getAIDetectStyle() } /** * 设置识别置信度 * @param confidence 识别置信度,范围 0 -1 * @returns 是否成功 */ export async function setAIDetectConfidence(confidence: number): Promise<boolean> { return await SAI.setAIDetectConfidence(confidence) } /** * 获取识别置信度 * @returns 识别置信度,范围 0 -1, 失败为 -1 */ export async function getAIDetectConfidence(): Promise<number> { return await SAI.getAIDetectConfidence() } /** * 获取当前模型能识别的所有种类的名称 * @returns 当前模型能识别的所有种类的名称 */ export async function getAIDetectLabels(): Promise<string[]> { return await SAI.getAIDetectLabels() } /** * 获取当前模型过滤(屏蔽)的识别种类的序号 * @returns 模型过滤(屏蔽)的识别种类的序号 */ export async function getAIDetectFilter(): Promise<number[]> { return await SAI.getAIDetectFilter() } /** * 设置是否过滤(屏蔽)某个识别的种类 * @param label 种类名称 * @param enable 是否启用此种类检测,true启用, false屏蔽 * @returns 是否成功 */ export async function enableAIDetectLabel(label: string, enable: boolean): Promise<boolean> { return await SAI.enableAIDetectLabel(label,enable) } // **************************************************************************** // 车牌识别 // **************************************************************************** /** * 开始车牌识别 * @returns 是否成功 * @throws 许可异常 */ export async function startCarPlateRead(): Promise<boolean> { return await SAI.startCarPlateRead() } /** * 结束车牌识别 * @returns 是否成功 */ export async function endCarPlateRead(): Promise<boolean> { return await SAI.endCarPlateRead() } let carPlateListener: EmitterSubscription | undefined /** * 添加车牌识别结果回调 * @param listener 识别回调,空为移除 */ export function setCarPlateReadListener(listener?: (text: string) => void): void { carPlateListener?.remove() carPlateListener = listener && event.addListener(EventConst.AI_CAR_PLATE_READ, listener) } // **************************************************************************** // AI 分类 // **************************************************************************** /** * 设置分类模型 * @param model 模型路径,参数等信息 * @returns 是否成功 */ export async function setAIClassifyModel(model: AIModelInfo): Promise<boolean> { return await SAI.setAIClassifyModel(model) } /** * 加载默认分类模型 * @param language 默认模型使用的语言,支持中文(’CN‘)和英文(’OTHER') * @returns 是否成功 */ export async function setAIClassifyDefaultModel(language: string): Promise<boolean> { return await SAI.setAIClassifyDefaultModel(language) } /** * 根据图片开始分类 * @param path 要分类的图片路径, 支持绝对路径,或 file:// , content:// 等开头的系统路径 * @returns AI分类信息结果数组 * @throws 许可异常 */ export async function startAIClassify(path: string): Promise<AIClassifyResult[]> { return await SAI.startAIClassify(path) }