Итак, допустим, вы выполнили обнаружение лица и обнаружили одно лицо на вашем изображении.Ваше изображение имеет размер 320 x 240, а лицо связано прямоугольником с местоположением 100,40 и шириной 20 x 30. Что бы вы хотели сделать с этой информацией?Я сделаю все возможное, чтобы помочь, но вам, вероятно, придется выяснить любые плохие предположения с моей стороны.
Во-первых, вы можете взять лицо и сохранить его в новом растровом изображении с чем-то вроде Bitmap.createBitmap () :
Bitmap face = Bitmap.createBitmap(largeSource, 100, 40, 20, 30);
Это должно быть сделано вне цикла отрисовки, как в onCreate или каком-либо другом шаге инициализации.
Похоже, выполучил некоторый контейнер (ImageView? Custom View с переопределенным onDraw?), который содержит ваше большое изображение.А теперь вы хотите просто нарисовать лицо в этом контейнере в его исходном положении?Если у вас есть пользовательское представление, это просто, как показано в вашем onDraw:
canvas.drawBitmap(face, 100, 40, facePaint);
Если вы используете вместо этого ImageView, я бы предложил вместо этого перейти к пользовательскому представлению,так как это звучит так, как будто вам нужен какой-то детальный элемент управления рисованием.
Наконец, если у вас есть куча этих граней, создайте новый объект FaceObj POJO, который имеет только растровые изображения, координаты x и y,Когда вы обнаружите лица, добавьте их в ArrayList, а затем итерируйте по этому в вашем onDraw, чтобы нарисовать все ваши лица:
faces.add(new FaceObj(Bitmap.createBitmap(largeSource, 100, 40, 20, 30), 100, 40);
...
foreach(FaceObj f : faces)
canvas.drawBitmap(f.bitmap, f.x, f.y, facePaint);