我正在使用相机预览实时检测对象,然后拍摄照片并将其显示在其他活动中,并且将在检测到的对象上绘制边界框(大多数情况下为多边形)。
我设法做到了,一切正常。现在,我正试图通过设置较小的相机预览尺寸并通过更改相机参数拍摄更大分辨率的照片来加快检测过程。但是我要获得的坐标必须缩放以匹配大图片尺寸。
就我而言:
对于画布大小我正在使用它来获得屏幕分辨率:
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 方法,并在它们之间绘制路径。
注意:我看到了几个关于大致相同主题的问题,但我无法与它们联系,因为我不能像我这样的用例。任何信息,帮助非常感谢。
答案 0 :(得分:0)
我需要做的就是在此之后找到Y
和X
的比例因子:
scaleFactorY = (float) newWidth / oldWidth;
scaleFactorX = (float) newHeight / oldHeight;
然后将坐标与这些因子相乘。此外,您需要确保保留图片的preview size
,picture size
和container
具有相同的宽高比,否则您将获得错位的坐标。
要获得所需的宽高比,只需要执行此操作:width / height
。