Segmentation 接口介绍
背景抠图检测器,回吐单通道Mask图。目前只支持单人抠图
0.1. 构造方法
同步构造方法
Segmentation segmentation = (Segmentation) CVCenter.getInstance().syncNewDetector(DetectorConstance.DETECTOR_TYPE_SEGMENT);
异步构造方法
CVCenter.getInstance().asyncNewDetector(DetectorConstance.DETECTOR_TYPE_SEGMENT, new DetectorListener.OnDetectorCreatedListener() { @Override public void onCreated(int type, Object detector) { Log.d(TAG, "onCreated: " + type + "," + detector); Segmentation segmentation = (Segmentation) detector; } @Override public void onFailed(String msg) { Log.e(TAG, "onFailed: " + msg); } });
0.2. 检测方法
- 抠图接口
MMFrame mmcvFrame = new MMFrame();
SegmentationInfo segmentationInfo = new SegmentationInfo();
mmcvFrame.setFormat(MMFrame.MMFormat.FMT_NV21);
mmcvFrame.setDataPtr(data);//data为相机或者图片数据
mmcvFrame.setDataLen(data.length);//数据的大小
mmcvFrame.setWidth(width);//图片宽度
mmcvFrame.setHeight(height);//图片高度
mmcvFrame.setStep_(width);//步距,在nv21模式下,等于宽度的值
SegmentationParams params = new SegmentationParams();
params.setFlipedShow(isFrontCamera);//前置摄像头的话,需要翻转
params.setRotateDegree(rotateDegree);//图片旋转角度
params.setRestoreDegree(restoreDegree);//相机安装角度
segmentation.ProcessFrame(mmFrame, segmentationParams, segmentationInfo);
0.3. SegmentationInfo 抠图遮罩数据
遮罩图二进制数据
public class SegmentationInfo { public byte[] mask_; }
0.4. 重制
- 重制检测器(视频检测与静态图检测互切时候需要调用,其他无需调用)
segmentation.Reset();
0.5. 释放
Segmentation.Release();