Допустим, вы выполнили распознавание лиц и нашли одно лицо на изображении. Ваше изображение имеет размер 320 x 240, а лицо ограничено прямоугольником с расположением 100,40 и шириной 20 x 30. Что бы вы хотели сделать с этой информацией? Я сделаю все, что в моих силах, чтобы помочь, но вам, вероятно, придется прояснить все неверные предположения с моей стороны.
Во-первых, вы можете захватить лицо и сохранить его в новом растровом изображении с помощью чего-то вроде Bitmap.createBitmap():
Bitmap face = Bitmap.createBitmap(largeSource, 100, 40, 20, 30);
Это должно быть сделано вне цикла отрисовки, например, в onCreate или на каком-либо другом этапе инициализации.
Похоже, у вас есть какой-то контейнер (ImageView? Пользовательский вид с переопределенным 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);
person
Josh
schedule
28.01.2011