导入依赖
// 引入基础SDK
implementation 'com.huawei.hms:ml-computer-vision-documentskew:3.5.0.301'
// 引入文档检测/校正模型包
implementation 'com.huawei.hms:ml-computer-vision-documentskew-model:3.5.0.301'
代码
//文档矫正
public void imgRevise(){
//创建文本框检测侧、矫正分析器
MLDocumentSkewCorrectionAnalyzerSetting setting=new MLDocumentSkewCorrectionAnalyzerSetting.Factory().create();
MLDocumentSkewCorrectionAnalyzer analyzer= MLDocumentSkewCorrectionAnalyzerFactory.getInstance().getDocumentSkewCorrectionAnalyzer(setting);
//通过android.graphics.Bitmap创建MLFrame对象用于分析器检测图片
Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.ccc);
MLFrame frame=MLFrame.fromBitmap(bitmap);
//asyncDocumentSkewDetect异步调用。
analyzer.asyncDocumentSkewDetect(frame).addOnSuccessListener(new OnSuccessListener<MLDocumentSkewDetectResult>() {
@Override
public void onSuccess(MLDocumentSkewDetectResult mlDocumentSkewDetectResult) {
//MLDocumentSkewDetectResult文本框检测结果。
Point leftTop = mlDocumentSkewDetectResult.getLeftTopPosition();
Point rightTop = mlDocumentSkewDetectResult.getRightTopPosition();
Point leftBottom = mlDocumentSkewDetectResult.getLeftBottomPosition();
Point rightBottom = mlDocumentSkewDetectResult.getRightBottomPosition();
List<Point> coordinates = new ArrayList<>();
coordinates.add(leftTop);
coordinates.add(rightTop);
coordinates.add(rightBottom);
coordinates.add(leftBottom);
MLDocumentSkewCorrectionCoordinateInput coordinateData = new MLDocumentSkewCorrectionCoordinateInput(coordinates);
//coordinateData校正结果
//MLDocumentSkewCorrectionCoordinateInput 文本框校正坐标信息输入。
Log.i(TAG, "onSuccess: 顶点坐标" + coordinateData.getPoints().toString());
//操作图片
analyzer.asyncDocumentSkewCorrect(frame,coordinateData).addOnSuccessListener(new OnSuccessListener<MLDocumentSkewCorrectionResult>() {
@Override
public void onSuccess(MLDocumentSkewCorrectionResult mlDocumentSkewCorrectionResult) {
Log.i(TAG, "onSuccess: 校正成功!!");
image.setImageBitmap(mlDocumentSkewCorrectionResult.getCorrected());
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.i(TAG, "onFailure: 矫正失败" + e.getMessage());
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.i(TAG, "onFailure: " + e.getMessage());
}
});
}
页面
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/bt_9"
android:text="文档校正"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
后台
private ImageView image;
private Button bt9;
image = findViewById(R.id.image);
bt9=findViewById(R.id.bt_9);
bt9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imgRevise();
}
});