- AI源码解读:数字图像处理案例(Python版)
- 李永华编著
- 756字
- 2022-07-27 17:26:24
3.3.4 模型生成
该测试分两部分:一是移动端(以Android为例)调用摄像头和相册获取数字图片;二是将数字图片转换为数据,输入TensorFlow的模型中,并且获取输出。
1.权限注册
权限注册相关操作步骤如下。
(1)调用摄像头需要注册内容提供器,对数据进行保护。在Android Manifest.xml中注册,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P112_24593.jpg?sign=1739422474-jKbJbPQqwzN7Dwh0e7bWWcGwZRu20HeI-0-5bdb494f68e62c7a3bb99a0f40077762)
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文件中的内容,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P113_24597.jpg?sign=1739422474-iMhnuiSbRq5kXeI2QGVKVKTspkMfeRRC-0-9be3e53f1d6411a64922272d6b9eff6c)
(2)调用摄像头需要访问SD卡的应用关联目录。在Android 4.4系统之前,访问SD卡的应用关联目录要声明权限。为了兼容旧版本系统,需要在AndroidManifest.xml中增加访问SD卡的权限。
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P113_24599.jpg?sign=1739422474-KGnMiQqf51kMSUI8L6ZtAAVfqgqVA6AP-0-2b255c39ee603ee9b26897ae550a0926)
(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类。
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P114_24603.jpg?sign=1739422474-oPmjx85MqUHgNZhs1Fuw1bd62LgxlKan-0-896f2a9e1831e2f14632de57c9a0753d)
3.相关代码
本部分包括布局文件、模型预测类和主活动类。
1)布局文件
相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P114_24605.jpg?sign=1739422474-9Sm75PgcxfsrMqjvopEckoNTiWcTpKLD-0-713ecbb2ca5c79e31dbbf171180b3f78)
该布局文件提供5个控件,3个button,分别是“拍照上传”“从相册获取”“单击输出结果”,1个TextView,显示预测结果,1个ImageView,展示数字图片。
上述代码中android:src="@drawable/test_image"负责设置初始界面的图片显示。将想要显示的名字为test_image的图片放入/res/drawable文件夹中。
2)模型预测类
相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P115_24608.jpg?sign=1739422474-JRCFgrsSJ62kM5duzlbcOGOAfsiwLy03-0-592ffbcffac7580d0123eb4666a81dcd)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P116_24609.jpg?sign=1739422474-UQ0frinikv1bXxkjRMofGdFLIkTGHGAG-0-0b276c4d15b9f13b348c1c61655ca59c)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P117_24611.jpg?sign=1739422474-NX99dO6iMoHUGApsd2waTWojC2VyF2Gu-0-d840709c178b03b1e2298bba477d8677)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P118_24887.jpg?sign=1739422474-o96pJCAk0I7iFVyhAyEDTe8oa4hw1RLA-0-662e7930318c32d2c72a6835caba856a)
3)主活动类
相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P118_24886.jpg?sign=1739422474-LFFLXUjOIWxlVCLykO2HsxskTdWOQ7j3-0-0a149c8c7f8effd29d64be11026aa6ba)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P119_24613.jpg?sign=1739422474-NBFVJe7v3CGWE92M9KIlvzZADqVvzXGR-0-a41f511cae4ba8aea6abcf7eed95fc31)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P120_24614.jpg?sign=1739422474-4DtyZZytO1yBTMRILGnjKDNwFTHA6a6C-0-61eb61f724cf353cd410a17b90cb19ef)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P121_24615.jpg?sign=1739422474-ok651JlxIjtdxyRkQmK1TUOlfWw3Owg5-0-fc2ab404471758bed0ce6a1e43a90712)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P122_24616.jpg?sign=1739422474-itUpnR7pF7TpgBO6eX4gfgCboCNPUa3o-0-d3e4b4f3976009f2238676f67c132a3b)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P123_24617.jpg?sign=1739422474-QpeMWdnDoIiQSsflHSdEzunYk0WbK44j-0-f10819f69a9929eb402eb13c21af1e58)