(Android)如何覆盖图像(ImageView)锚定到眼睛?

时间:2016-07-10 14:05:40

标签: android camera tracking face-recognition android-vision

下午好! 告诉我如何覆盖图像(ImageView),锚定到眼睛? 我想跟踪使用Google Vision API。 也许有一个如何戴上帽子的例子?

加。 (2016年Jule 2016)

使用以下代码:

imageView.setX(mPosition.x);
imageView.setY(mPosition.y);
postInvalidate();

不严格锚定(蓝色方块),你可以在与照片距离不同的截图中看到它:

enter image description here

请告诉我为什么会这样?

1 个答案:

答案 0 :(得分:1)

Google Mobile Vision API GitHub示例中有一个示例,说明了如何根据眼睛的位置绘制眼球图形:https://github.com/googlesamples/android-vision/tree/master/visionSamples/googly-eyes

为了覆盖图像而不是绘制图元(如示例所示),您可以将图像加载到位图

InputStream inputStream = contentResolver.openInputStream(imageUri);
Bitmap mBitmap = BitmapFactory.decodeStream(inputStream, null, options); 

然后使用canvas.drawBitmap

将其绘制到所需位置的画布上
canvas.drawBitmap(mBitmap, eyePosition.x, eyePosition.y, mPaint);

如果您与ImageView结婚,您可以将图像加载到其中,然后在跟踪器更新时直接更新该位置

imageView.setX(mPosition.x);
imageView.setY(mPosition.y);
postInvalidate();

确保在创建View的线程上发生这些set调用,否则它们将抛出异常。