x + 宽度必须 <= bitmap.width()

Posted

技术标签:

【中文标题】x + 宽度必须 <= bitmap.width()【英文标题】:x + width must be <= bitmap.width() 【发布时间】:2021-02-18 23:34:02 【问题描述】:

我正在尝试使用 google-mlkit 开发人脸检测。按照 google-mlkit https://developers.google.com/ml-kit/vision/face-detection/android 的文档设置相机、分析仪、检测器等后,我能够检测到人脸。检测到人脸后,我正在尝试提取检测到的人脸图像。

获取检测到的人脸boundingBox,使用boundingBox将完整的位图提取到检测到的人脸位图中。代码如下。

Bitmap bmp = Bitmap.createBitmap(mediaImage.getWidth(), mediaImage.getHeight(), Bitmap.Config.ARGB_8888);                                             
YuvToRgbConverter converter = new YuvToRgbConverter(context);
converter.yuvToRgb(mediaImage, bmp);
Bitmap extractedBmp = extractFace(
   bmp,
   (int) (face.getBoundingBox().exactCenterX() / 2),
   (int) (face.getBoundingBox().exactCenterY() / 2),
   face.getBoundingBox().width(),
   face.getBoundingBox().height()
);

private Bitmap extractFace(Bitmap bmp, int x, int y, int width, int height) 
  return Bitmap.createBitmap(bmp, x, y, width, height);

有时成功,有时也失败。调试后发现是x + width must be &lt;= bitmap.width()的错误。 我做错了什么?

【问题讨论】:

【参考方案1】:

您能否尝试使用 mlkit 示例 here 中提供的 util 方法从 YUV 图像创建 bimap?

【讨论】:

ok,我先试试。我会回复你的结果。

以上是关于x + 宽度必须 <= bitmap.width()的主要内容,如果未能解决你的问题,请参考以下文章

如何获取使用自动布局的 UIView 的 x、y、宽度、高度

如果大小大于 800 像素,则设置最大内容宽度

如何用PHP输出图片的宽度和高度?

使两个按钮的宽度相等

如何设置 highcharts X轴和Y轴值

在 JCrop 中设置最大高度和最大宽度