mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-17 22:21:48 +08:00
[Android] Add SCRFD android app example (#682)
* [Android] Add CxxBuffer to native PaddleSegModel * [Android] Add PaddleSeg android app example * [Android] Add SCRFD android app example * [Doc] fix typos * [Android] revert camera setting changes
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 目标检测 PaddleSeg Android Demo 使用文档
|
||||
|
||||
在 Android 上实现实时的目标检测功能,此 Demo 有很好的的易用性和开放性,如在 Demo 中跑自己训练好的模型等。
|
||||
在 Android 上实现实时的人像分割功能,此 Demo 有很好的的易用性和开放性,如在 Demo 中跑自己训练好的模型等。
|
||||
|
||||
## 环境准备
|
||||
|
||||
@@ -23,9 +23,10 @@
|
||||
4. 点击 Run 按钮,自动编译 APP 并安装到手机。(该过程会自动下载预编译的 FastDeploy Android 库 以及 模型文件,需要联网)
|
||||
成功后效果如下,图一:APP 安装到手机;图二: APP 打开后的效果,会自动识别图片中的人物并绘制mask;图三:APP设置选项,点击右上角的设置图片,可以设置不同选项进行体验。
|
||||
|
||||
| APP 图标 | APP 效果 | APP设置项
|
||||
| APP 图标 | APP 效果 | APP设置项
|
||||
| --- | --- | --- |
|
||||
|  | <img width="1200" height="600" alt="image" src="https://user-images.githubusercontent.com/31974251/203507683-bc990cf5-393e-4e0d-bd6b-0f114235d320.png"> |  |
|
||||
| <img width="300" height="500" alt="image" src="https://user-images.githubusercontent.com/31974251/203268599-c94018d8-3683-490a-a5c7-a8136a4fa284.jpg"> | <img width="300" height="500" alt="image" src="https://user-images.githubusercontent.com/31974251/203267867-7c51b695-65e6-402e-9826-5d6d5864da87.gif"> | <img width="300" height="500" alt="image" src="https://user-images.githubusercontent.com/31974251/197332983-afbfa6d5-4a3b-4c54-a528-4a3e58441be1.jpg"> |
|
||||
|
||||
|
||||
## PaddleSegModel Java API 说明
|
||||
- 模型初始化 API: 模型初始化API包含两种方式,方式一是通过构造函数直接初始化;方式二是,通过调用init函数,在合适的程序节点进行初始化。PaddleSegModel初始化参数说明如下:
|
||||
|
@@ -287,27 +287,20 @@ public class CameraSurfaceView extends GLSurfaceView implements Renderer,
|
||||
public void openCamera() {
|
||||
if (disableCamera) return;
|
||||
camera = Camera.open(selectedCameraId);
|
||||
Camera.Parameters parameters = camera.getParameters();
|
||||
int degree = Utils.getCameraDisplayOrientation(context, selectedCameraId);
|
||||
camera.setDisplayOrientation(degree);
|
||||
boolean rotate = degree == 90 || degree == 270;
|
||||
int adjusted_width = rotate ? EXPECTED_PREVIEW_HEIGHT : EXPECTED_PREVIEW_WIDTH;
|
||||
int adjusted_height = rotate ? EXPECTED_PREVIEW_WIDTH : EXPECTED_PREVIEW_HEIGHT;
|
||||
|
||||
List<Size> supportedPreviewSizes = camera.getParameters().getSupportedPreviewSizes();
|
||||
|
||||
Size previewSize = Utils.getOptimalPreviewSize(
|
||||
supportedPreviewSizes, adjusted_width, adjusted_height);
|
||||
|
||||
textureWidth = previewSize.width;
|
||||
textureHeight = previewSize.height;
|
||||
|
||||
Size previewSize = Utils.getOptimalPreviewSize(supportedPreviewSizes, EXPECTED_PREVIEW_WIDTH,
|
||||
EXPECTED_PREVIEW_HEIGHT);
|
||||
Camera.Parameters parameters = camera.getParameters();
|
||||
parameters.setPreviewSize(previewSize.width, previewSize.height);
|
||||
camera.setParameters(parameters);
|
||||
|
||||
if (parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
|
||||
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
|
||||
}
|
||||
camera.setParameters(parameters);
|
||||
int degree = Utils.getCameraDisplayOrientation(context, selectedCameraId);
|
||||
camera.setDisplayOrientation(degree);
|
||||
boolean rotate = degree == 90 || degree == 270;
|
||||
textureWidth = rotate ? previewSize.height : previewSize.width;
|
||||
textureHeight = rotate ? previewSize.width : previewSize.height;
|
||||
|
||||
// Destroy FBO and draw textures
|
||||
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
|
||||
|
Reference in New Issue
Block a user