Как правильно изменить размер обнаруженной границы лица соответствует предварительному просмотру камерыAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как правильно изменить размер обнаруженной границы лица соответствует предварительному просмотру камеры

Сообщение Anonymous »

Я использую обнаружение лица ML Kit в моем приложении Android. Я реализовал это с библиотекой камеры 2. Функциональность работает огнем, и я получаю связанную коробку для лица, обнаруженного в предварительном просмотре камеры. Но когда я сравниваю его с применением применения комплекта ML. Я думаю, что в моем расчете об изменении размера есть ошибка. < /P>

Код: Выделить всё

private fun drawAdjustedFaceBoundBox(canvas: Canvas) {

val myPaint = Paint()
myPaint.color = Color.rgb(220, 249, 10)
myPaint.strokeWidth = 5f
myPaint.style = Paint.Style.STROKE

if (analyzedImageSize.width != 0 && analyzedImageSize.height != 0) {

val horizontalScaleFactor = previewScreenSize.width / analyzedImageSize.width.toFloat()
val verticalScaleFactor = previewScreenSize.height / analyzedImageSize.height.toFloat()

val adjustedBoundRect = RectF()
adjustedBoundRect.top = (objectBound.top * verticalScaleFactor) + surfaceTop.toFloat()
adjustedBoundRect.left = objectBound.left * horizontalScaleFactor
adjustedBoundRect.right = objectBound.right * horizontalScaleFactor
adjustedBoundRect.bottom = (objectBound.bottom * verticalScaleFactor) + surfaceTop.toFloat()

val adjustedMirrorObjectBound = RectF(adjustedBoundRect)

if (mirrorCoordinates) {
val originalRight = adjustedBoundRect.right
val originalLeft = adjustedBoundRect.left
//mirror the coordination since it's the front facing camera
adjustedMirrorObjectBound.left = (previewScreenSize.width - originalRight)
adjustedMirrorObjectBound.right = (previewScreenSize.width - originalLeft)
}

canvas.drawRect(adjustedMirrorObjectBound, myPaint)
}
}
< /code>
Это функция, которую я использую для расчета Resise Bound Bound. Я объясню свой подход. Впервые я получил масштабной коэффициент для оси x и y. X называется HorizontalScaleFactor 
y, называется VerticalScaleFactor . Затем я умножил исходные значения связанных коробок на коэффициенты соответствующих масштабных коэффициентов. surfacetop.tofloat () - это значение от верхней части экрана в представление о предварительном просмотре камеры. В моем примере это 0. Поскольку я использую переднюю камеру, я отражал координацию после расчета масштаба. После применения этих расчетов на моем обнаруженном лице есть много коробочек, но оно не покрывает все мое лицо, как в проекте образца комплекта ML. Когда я двигаюсь лицом влево и направо, моя связанная коробка правильно перемещается с лицом, так что кажется, что моя связанная коробка отражает правильный. Пожалуйста, обратитесь к Bellow Image, чтобы получить представление о разнице между моим приложением и примером приложения. = "Bound Bound Bound Preview My Appliew" src = "https://i.sstatic.net/cepli.png"/>
Ml комплекта br/>
В основном мой Связанная коробка не покрывает два уша и участки подбородка. Это кажется более математической проблемой, а не проблемой кода. Пожалуйста, помогите мне определить, что я делаю не так. Этот образец репозитория реализация обнаружения лица. Пожалуйста, проверьте ветвь Dev в моем репо. : //i.sstatic.net/3wvk0.jpg "/>
Так выглядит при запуске приложения. У меня нет доступа к прокси -изображению, так как оно не сохраняет хранилище. Прокси -изображение создается библиотекой камер, которая использует для захвата изображения.

Подробнее здесь: https://stackoverflow.com/questions/740 ... ra-preview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»