Я работаю над приложением для обнаружения объектов в режиме реального времени с помощью предварительного просмотра камеры, а затем делаю снимок и отображаю его в другом упражнении, а над обнаруженным объектом будет нарисован ограничивающий прямоугольник (в большинстве случаев многоугольник).
Мне удалось это сделать, и все отлично работает.Сейчас я пытаюсь ускорить процесс обнаружения, установив небольшой предварительный размер камеры и сделав снимок с большим разрешением, изменив параметры камеры.Но координаты, которые я получу, должны быть масштабированы, чтобы соответствовать большому размеру изображения.
В моем случае:
- Размер предварительного просмотра камеры всегда: 640x480 (координаты соответствуют этому размеру)
- Размер снимка будет выбран с использованием метода, указанного в принятом ответе здесь .
- В большинстве случаев размер изображения будет такимбольшой (в моем телефоне это 4260x3120 ), и я изменяю размер холста, чтобы он соответствовал экрану
Для размера холста я использую это, чтобы получить разрешение экрана:
public static int getScreenWidth() {
return Resources.getSystem().getDisplayMetrics().widthPixels;
}
public static int getScreenHeight() {
return Resources.getSystem().getDisplayMetrics().heightPixels;
}
мой xml-файл выглядит следующим образом:
<LinearLayout>
....
<android.support.v7.widget.Toolbar
....
</android.support.v7.widget.Toolbar>
....
<FrameLayout
android:id="@android:id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp">
<packagename.CropImageView
android:id="@+id/scannedImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:src="@mipmap/ic_launcher_round" />
</FrameLayout>
</LinearLayout>
и в моем пользовательском классе просмотра CropImageView Я передаю четыре координаты onDraw метод и рисование путей между ними.
Примечание : я видел пару вопросов примерно об одном и том же предмете, но не мог с ними связаться, посколькуЯ не мог использовать такой случай, как мой.Любая информация, помощь очень ценится.