Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Google API for android的CameraSource中保存覆盖图像?_Android_Google Api_Android Vision - Fatal编程技术网

如何在Google API for android的CameraSource中保存覆盖图像?

如何在Google API for android的CameraSource中保存覆盖图像?,android,google-api,android-vision,Android,Google Api,Android Vision,我在android中使用谷歌API进行人脸检测。当检测到人脸时,我正在画布上绘制图像。我正试图通过点击一个按钮来捕捉覆盖图的图像。在方法中 public void onPictureTaken(字节[]字节),字节仅包含图像,而不包含在其上绘制的覆盖。有没有办法保存覆盖在上面的图像 你必须 创建以新位图为背景的新画布 Bitmap picture = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); Bitmap resizedBit

我在android中使用谷歌API进行人脸检测。当检测到人脸时,我正在画布上绘制图像。我正试图通过点击一个按钮来捕捉覆盖图的图像。在方法中
public void onPictureTaken(字节[]字节)
,字节仅包含图像,而不包含在其上绘制的覆盖。有没有办法保存覆盖在上面的图像

你必须

  • 创建以新位图为背景的新画布

    Bitmap picture = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    Bitmap resizedBitmap = Bitmap.createBitmap(mGraphicOverlay.getWidth(),mGraphicOverlay.getHeight(),picture.getConfig());
    Canvas canvas = new Canvas(resizedBitmap);
    
  • 在其上绘制捕获的位图

  • 在上面画上覆盖物
  • 保存新位图
此外,为了使覆盖图与捕获的图片相匹配,您需要镜像图片或覆盖图

Matrix matrix = new Matrix();

matrix.setScale((float)resizedBitmap.getWidth()/(float)picture.getWidth(),(float)resizedBitmap.getHeight()/(float)picture.getHeight());

// mirror by inverting scale and translating
matrix.preScale(-1, 1);
matrix.postTranslate(canvas.getWidth(), 0);

Paint paint = new Paint();
canvas.drawBitmap(picture,matrix,paint);

tracker.getmEyesGraphic().draw(canvas); // make those accessible

我使用
this.getDrawingCache()从GraphicOverlay类获取覆盖,但它始终返回相同的覆盖。例如,当我更改覆盖时,它总是返回第一个覆盖。另外,当拍摄图像时,它会旋转,有时旋转90度,有时旋转-90度。我得到的覆盖在正确的位置,所以当我把它放在图像上时,它看起来不正确。请记住,有三种不同的坐标系,你需要管理:(1)预览图像坐标-这些坐标是人脸检测器报告的坐标,(2)绘制画布坐标-这些是用于绘制覆盖图的坐标,(3)图片图像坐标-与预览的不同之处在于它可能具有更高的分辨率。另外请注意,如果您使用的是前置摄像头,预览/覆盖将水平翻转(镜像)。单击“捕获”按钮时,如何获得正确的覆盖?如果您已解决此问题,请发布解决方案。我想完成同样的任务。我还没有找到解决方案。但等我有更多空闲时间的时候,我会很快开始做的。如果我找到任何解决方案,我会把它贴在这里。最后一行的跟踪器是什么??