根据android中的矩形坐标裁剪捕获的图像

Posted

技术标签:

【中文标题】根据android中的矩形坐标裁剪捕获的图像【英文标题】:Crop the captured image on the basis of Rect Cordinates in android 【发布时间】:2021-10-11 07:05:17 【问题描述】:

我正在尝试裁剪 RoundRect 内的部分。我在 PreviewView 顶部有一个叠加层。水平边距为屏幕宽度的 2%,顶部为屏幕高度的 15%。

当我拍照时,我想以与显示的 RoundRect 相同的比例裁剪它。由于捕获图像的分辨率与屏幕的分辨率不同,我无法获得圆角矩形内的确切部分。无论如何我可以使用用于 RoundRect 的边距值来获取捕获图像的边距值吗?

我确实尝试将其缩小到屏幕尺寸as mentioned here 并进行裁剪,但即使这样也无济于事,因为质量和纵横比会受到影响。

我正在使用位图来裁剪捕获的图像。

Bitmap.createBitmap(originalBp, left, top, right, bottom);

【问题讨论】:

【参考方案1】:

输出与裁剪矩形对齐。不同用例的裁剪矩形应映射到相机传感器上的同一区域。如果您使用的是 PreviewView,计算从 Preview 到 ImageCapture 的转换的简单方法是使用CoordinateTransform:

 // Build the transform from PreviewView to Capture
OutputTransform source = previewView.getOutputTransform();
OutputTransform source = FileTransformFactory().getOutputTransform(capturedFile);
CoordinateTransform coordinateTransform = new CoordinateTransform(source, target);
 
 
coordinateTransform.mapRect(roundRect);

// Then use roundRect to crop the capture file.

【讨论】:

以上是关于根据android中的矩形坐标裁剪捕获的图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenCV 如何根据 x 和 y 坐标裁剪图像,并允许 x 和 y 坐标成为裁剪的中心?

当图片大于矩形时,计算图片裁剪的坐标矩形

ENVI中如何剪裁所需要的经纬度

根据放置在相机上的视图裁剪图像的特定部分

Android - 从多点裁剪图像

Android自动裁剪相机捕获的图像