本文主要介紹了 Android SDK 中 AI 檢測相關的 API。
開啟人臉檢測
public DetectResult[] startDetectFace(byte[] data, int imageWidth,
int imageHeight, int angle,
boolean needFlipX)
請求參數
參數 | 類型 | 說明 | 是否必須 |
data | byte[]、int[] | 檢測數據源 | 是 |
imageWidth | int | 圖片寬度 | 是 |
imageHeight | int | 圖片高度 | 是 |
angle | int | 角度 | 是 |
needFlipX | boolean | 是否使用鏡像 | 是 |
返回值
DetectResult[]
屬性 | 類型 | 說明 |
imageWidth | int | 圖片寬度 |
imageHeight | int | 圖片高度 |
rotateDegree | int | 旋轉角度 |
faceDetectionReport | FaceDetectionReport | 人臉檢測報告 |
inAngle | int | 角度 |
facePoints | float[] | 人臉位置信息 |
data | byte[] | 活體結果 |
argbData | int[] | 參數數據 |
currentTimeMillis | long | 當前時間 |
name | String | 檢測的名字 |
type | int | 檢測的類型 |
faceId | int | 檢測 ID |
代碼示例
DetectResult[] DetectResult =
IdrsSdk.getInstance().startDetectFace(data, imageWidth,imageHeight,
angle,needFlipX)
獲取人臉特征
public float[] getFeature(DetectResult detectResult)
請求參數
參數 | 類型 | 說明 | 是否必須 |
detectResult | DetectResult | 檢測數據源 | 是 |
返回值
類型 | 說明 |
float[] | 特征數組 |
代碼示例
float[] feature = IdrsSdk.getInstance().getFeature(DetectResult1)
獲取位圖特征
public float[] getBitmapFeature(Bitmap bitmap)
請求參數
參數 | 類型 | 說明 | 是否必須 |
bitmap | Bitmap | 需要識別的圖片 | 是 |
返回值
類型 | 說明 |
float[] | 特征數組 |
代碼示例
float[] feature = IdrsSdk.getInstance().getBitmapFeature(bitmap)
人照比對
public float faceRecognitionSimilarity(float[] features1, float[] features2)
請求參數
參數 | 類型 | 說明 | 是否必須 |
features1 | float[] | 需要對比的特征數組 | 是 |
features2 | float[] | 需要對比的特征數組 | 是 |
返回值
類型 | 說明 |
float | 返回的相似度 |
代碼示例
float v = IdrsSdk.getInstance().faceRecognitionSimilarity(role.getFeature(), feature);
畫面實時標記
public RectF viewRectToFrameRect(RectF viewRect, int viewWidth,
int viewHeight, int frameWidth,
int frameHeight, boolean mirror, int rotate)
請求參數
參數 | 類型 | 說明 | 是否必須 |
viewRect | RectF | 標記的矩形 | 是 |
viewWidth | int | 控件的寬度 | 是 |
viewHeight | int | 控件的高度 | 是 |
frameWidth | int | 圖片的寬度 | 是 |
frameHeight | int | 圖片的高度 | 是 |
mirror | boolean | 是否需要鏡像 | 是 |
rotate | int | 旋轉的角度 | 是 |
返回值
類型 | 說明 |
RectF | 返回的矩形位置 |
代碼示例
RectF frameRect = IdrsSdk.getInstance().viewRectToFrameRect(
viewRect, cameraView.getWidth(),cameraView.getHeight(),
imageWidth, imageHeight, false, 0);
開啟手勢識別
public ArrayList<HandDetectionResult> startHandDetection(byte[] data,
int imageWidth, int imageHeight, int angle,
boolean isFrontCamera, boolean isStatic)
請求參數
參數 | 類型 | 說明 | 是否必須 |
data | byte[] | 標記的矩形 | 是 |
imageWidth | int | 控件的寬度 | 是 |
imageHeight | int | 控件的高度 | 是 |
angle | int | 旋轉角度 | 是 |
isFrontCamera | boolean | 是否前置攝像頭 | 是 |
isStatic | boolean | 是否需要鏡像 | 是 |
返回值
ArrayList<HandDetectionResult>
屬性 | 類型 | 說明 |
left | float | 距左 |
top | float | 距上 |
bottom | float | 距底部 |
right | float | 距右 |
action | String | 手勢的姿勢 |
touchphone | boolean | 是否手勢 |
phoneTouchedPointx | float | 手勢x坐標 |
phoneTouchedPointy | float | 手勢y坐標 |
faceRect | RectF | 手勢矩形數據 |
代碼示例
ArrayList<HandDetectionResult> handDetectionResults =
IdrsSdk.getInstance().startHandDetection(data, imageWidth,
imageHeight, angle, needFlipX, true);
簽名類型檢測
public String classify_run(int width, int height, byte[] data,
float[] roi, int rotation, boolean mirror)
請求參數
參數 | 類型 | 說明 | 是否必須 |
width | int | 圖片寬度 | 是 |
height | int | 圖片高度 | 是 |
data | byte[] | 圖片字節碼數據 | 是 |
roi | float[] | 提示文字數據信息 | 是 |
rotation | int | 旋轉角度 | 是 |
mirror | boolean | 是否需要鏡像 | 是 |
返回值
類型 | 說明 |
String | 簽名類型 |
代碼示例
String type = IdrsSdk.getInstance().classify_run(imageWidth, imageHeight,
data, floats, 0, false);
身份證識別
public String ocr_run(int width, int height, byte[] data,
float[] roi, int rotation, boolean mirror, boolean isFront)
請求參數
參數 | 類型 | 說明 | 是否必須 |
width | int | 圖片寬度 | 是 |
height | int | 圖片高度 | 是 |
data | byte[] | 圖片字節碼數據 | 是 |
roi | float[] | 提示文字數據信息 | 是 |
rotation | int | 旋轉角度 | 是 |
mirror | boolean | 是否需要鏡像 | 是 |
isFront | boolean | 是否前置攝像頭 | 是 |
返回值
類型 | 說明 |
String | 身份證數據 |
代碼示例
String json = IdrsSdk.getInstance().ocr_run(
imageWidth, imageHeight, data, floats, 0, false, true);
身份證識別
public String ocr_run_Bitmap(Bitmap bitmap,
float[] roi, int rotation, boolean isFront)
請求參數
參數 | 類型 | 說明 | 是否必須 |
bitmap | Bitmap | 需要識別的圖片 | 是 |
roi | float[] | 提示文字數據信息 | 是 |
rotation | int | 旋轉角度 | 是 |
isFront | boolean | 是否前置攝像頭 | 是 |
返回值
類型 | 說明 |
String | 身份證數據 |
代碼示例
String json = IdrsSdk.getInstance().ocr_run_Bitmap(bitmap, floats, 0, true);
開啟激活詞檢測
public int startDialogforData(Handler handler)
請求參數
參數 | 類型 | 說明 | 是否必須 |
handler | Handler | 用于監聽識別結果 | 是 |
返回值
無
代碼示例
IdrsSdk.getInstance().startDialogforData(new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if (msg.what == 100) {
IdrsSdk.getInstance().stopDialog();
Toast.makeText(CreateRoomActivity.this, "激活詞識別成功: " + msg.obj,
Toast.LENGTH_LONG).show();
}
}
});
結束激活詞檢測
public void stopDialog()
請求參數
無
返回值
無
代碼示例
IdrsSdk.getInstance().stopDialog();
開始 TTS 合成
public void startTTs(String text, TTsListener listener)
請求參數
參數 | 類型 | 說明 | 是否必須 |
text | String | 需要播報的字符串 | 是 |
listener | TTsListener | 合成監聽 | 否 |
返回值
無
代碼示例
IdrsSdk.getInstance().startTTs(text, new AudioService.TTsListener() {
@Override
public void onPlayComplete() {
}
@Override
public void onTTSStatusChangeCallback(AudioService.TTSStatus ttsStatus) {
}
@Override
public void onDataCallback(byte[] text, int work_idx, byte[] data) {
}
});
結束 TTS 合成
public void cancelTts()
請求參數
無
返回值
無
代碼示例
IdrsSdk.getInstance().cancelTts();
暫停播放
public void pauseTts()
請求參數
無
返回值
無
代碼示例
IdrsSdk.getInstance().pauseTts();
當前是否暫停
public boolean isPauseTts()
請求參數
無
返回值
參數 | 類型 | 說明 |
isPause | boolean | 當前是否暫停 |
代碼示例
IdrsSdk.getInstance().isPauseTts();
是否正在播放
public boolean isPlayTts()
請求參數
無
返回值
參數 | 類型 | 說明 |
isPlay | boolean | 是否正在播放 |
代碼示例
IdrsSdk.getInstance().isPlayTts();
恢復 TTS
public void resumeTts()
請求參數
無
返回值
無
代碼示例
IdrsSdk.getInstance().resumeTts();
TTS 參數設置
public void setparamTts(String key, String value)
請求參數
參數 | 類型 | 說明 | 是否必須 |
key | String | font_name、 speed_level、 volume、 pitch_level | 是 |
value | String | xiaoyun、1 | 是 |
返回值
無
代碼示例
IdrsSdk.getInstance().setparamTts("font_name", "xiaoyun");//設置播報人
IdrsSdk.getInstance().setparamTts("speed_level", "1");//設置播報速度
獲取 TTS 參數
public String getparamTts(String key)
請求參數
參數 | 類型 | 說明 | 是否必須 |
key | String | font_name、 speed_level、 volume、 pitch_level | 是 |
返回值
類型 | 說明 |
String | 對應 key 的 value 值 |
代碼示例
IdrsSdk.getInstance().setparamTts("speed_level");//當前播放速度