AI源码解读:数字图像处理案例(Python版)
上QQ阅读APP看书,第一时间看更新
 AI源码解读.数字图像处理案例:Python版

3.3.4 模型生成

该测试分两部分:一是移动端(以Android为例)调用摄像头和相册获取数字图片;二是将数字图片转换为数据,输入TensorFlow的模型中,并且获取输出。

1.权限注册

权限注册相关操作步骤如下。

(1)调用摄像头需要注册内容提供器,对数据进行保护。在Android Manifest.xml中注册,相关代码如下:

android:name属性值是固定的(若targetSDKversion为29,该属性应为"androidx.core.content.FileProvider"),android:authorities属性的值必须和FileProvider.getUriForFile()方法中的第二个参数一致。

另外,<meta-data>的resource属性需自行创建,右击res目录→New→Directory,创建xml目录;右击xml目录→New→File,创建file_paths.xml文件。修改file_paths.xml文件中的内容,相关代码如下:

(2)调用摄像头需要访问SD卡的应用关联目录。在Android 4.4系统之前,访问SD卡的应用关联目录要声明权限。为了兼容旧版本系统,需要在AndroidManifest.xml中增加访问SD卡的权限。

(3)调用手机相册时需要动态申请WRITE_EXTERNAL_STORAGE这个危险权限,该权限表示同时授予程序对SD卡读和写的能力。

(4)不同版本的手机,在处理图片上方法不同。因为Android系统从4.4版本开始,选取相册中的图片不再返回真实的Uri,而是封装过的,因此,如果是4.4版本以上的手机需要对Uri进行解析,调用handleImageOnKitKat()方法处理图片,否则调用handleImageBeforeKitKat()。

2.模型导入及调用

模型导入相关操作步骤如下:

(1)把训练好的.pb文件放入Android项目app/src/main/assets下,若不存在assets目录,右击main→new→Directory,输入assets。

(2)新建类PredictionTF.java,在该类中加载so库,调用TensorFlow模型得到预测结果。

(3)在MainActivity.java中声明模型存放路径,调用PredictionTF类。

3.相关代码

本部分包括布局文件、模型预测类和主活动类。

1)布局文件

相关代码如下:

该布局文件提供5个控件,3个button,分别是“拍照上传”“从相册获取”“单击输出结果”,1个TextView,显示预测结果,1个ImageView,展示数字图片。

上述代码中android:src="@drawable/test_image"负责设置初始界面的图片显示。将想要显示的名字为test_image的图片放入/res/drawable文件夹中。

2)模型预测类

相关代码如下:

3)主活动类

相关代码如下: