Java Android-使用OpenCV矩形检测获取自动裁剪位图
我使用OPENCV来检测银行支票,而相机开始预览,工作正常。 每当检测到矩形时,我都会从Mat数据中获取位图值,但我只希望有文档图像而不是整个帧位图(在矩形形式中检测到的部分),请指导我 提前表示感谢,如果出现格式错误,请道歉 参考文献:Java Android-使用OpenCV矩形检测获取自动裁剪位图,java,android,opencv,image-processing,bitmap,Java,Android,Opencv,Image Processing,Bitmap,我使用OPENCV来检测银行支票,而相机开始预览,工作正常。 每当检测到矩形时,我都会从Mat数据中获取位图值,但我只希望有文档图像而不是整个帧位图(在矩形形式中检测到的部分),请指导我 提前表示感谢,如果出现格式错误,请道歉 参考文献: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CameraPreview cameraPreview = (CameraPreview) findViewById(R.id.camera_preview);
cameraPreview.setCallback((data, camera) -> {
CameraData cameraData = new CameraData();
cameraData.data = data;
cameraData.camera = camera;
subject.onNext(cameraData);
});
cameraPreview.setOnClickListener(v -> cameraPreview.focus());
DrawView drawView = (DrawView) findViewById(R.id.draw_layout);
subject.concatMap(cameraData ->
OpenCVHelper.getRgbMat(new MatData(), cameraData.data, cameraData.camera))
.concatMap(matData -> OpenCVHelper.resize(matData, 400, 400))
.map(matData -> {
matData.resizeRatio = (float) matData.oriMat.height() / matData.resizeMat.height();
matData.cameraRatio = (float) cameraPreview.getHeight() / matData.oriMat.height();
return matData;
})
.concatMap(this::detectRect)
.compose(mainAsync())
.subscribe(matData -> {
if (drawView != null) {
if (matData.cameraPath != null) {
drawView.setPath(matData.cameraPath);
mat = matData.oriMat;
bitmap = Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
} else {
drawView.setPath(null);
}
drawView.invalidate();
}
});
}