深入OpenCV Android应用开发 中文版 – 第四章代码更新

本书中文版购书链接:京东  当当

英文原版购书链接:亚马逊《Mastering OpenCV Android Application Programming》


        原书所给代码以章为单位,针对的Android版本从API 19到API 21不等,同时使用的OpenCV库版本也有2.4.9和2.4.10两种。本文给出的代码是在原书代码的基础上,针对Android 7.0(API 24)与OpenCV 3.2进行了修改,适当地增加了一些预处理等操作,以使代码整体上更合理。

        原书的完整代码可以在这里获取:https://www.packtpub.com/lcode_download/22299

        更新后的代码托管在GitHub:https://github.com/johnhany/MOAAP/tree/master/MOAAP-Chp4-r3

        关于在Android Studio上配置OpenCV开发环境的方法,请参考《在Android Studio上进行OpenCV 3.1开发》

        本章介绍如何在Android Studio 2上利用OpenCV开发一个人脸检测应用,涉及的算法有Haar级联分类器和LBP级联分类器。关于以上各算法的原理可以参考《深入OpenCV Android应用开发》第四章。


开发环境

        Windows 10 x64

        Android Studio 2.3.3(Gradle 3.3,Android Plugin 2.3.3)

        Android 7.0(API 24)

        JDK 8u141

        OpenCV 3.2.0 Android SDK


代码及简略解释

        1. 创建Android Studio项目,包命名为net.johnhany.moaap_chp4。导入OpenCV-android-sdk\sdk\java到项目中,并为app模块加载模块依赖。

        2.app\src\main\java\net\johnhany\moaap_chp4\MainActivity.java文件修改为如下内容:

        第48行的R.raw.haarcascade_frontalface_alt2代表预训练的分类器文件。该文件从OpenCV-android-sdk\sdk\etc\haarcascades可以找到,然后复制到项目目录的app\src\main\res\raw文件夹中(需要自己建立一个名为raw的文件夹)。在OpenCV-android-sdk\sdk\etc目录中,有两个文件夹,一个是haarcascades,包含官方提供的已经训练好的各种Haar分类器(更准确地说,是分类器的参数),可以直接用CascadeClassifier()调用进行分类;另一个是lbpcascades,包含多种预训练LBP分类器。如果想把Haar换为LBP,那么把haarcascade_frontalface_alt2替换为LBP的文件名。两种分类器都能被CascadeClassifier()加载,只不过LBP的速度稍快于Haar,而且精度低于Haar。

        3. 修改app\src\main\res\layout\activity_main.xml文件:

        4. 在app\src\main\res目录下创建一个名为menu的Andorid resource directory,再在res\menu中创建一个menu_main.xml文件:

        其实这个action_settings按钮并没有实际用途,老版本的Android Studio会默认创建这一项,我放在这儿只是为了占位:)但menu根节点是不可或缺的,因为我们在Java代码中添加了一个切换前置和后置摄像头的按钮。

        5. 修改app\src\main\res\AndroidManifest.xml文件为如下内容:

        6. 修改app\src\main\res\values\strings.xml文件:

        同样,第二项Settings其实是无用的。

        7. 修改app\src\main\res\values\styles.xml文件:

        这里保留ActionBar而没有完全全屏的原因是菜单按钮一般位于ActionBar,我们还需要通过菜单按钮来切换前/后置摄像头。

        8. app\build.gradle文件修改为:

        9. openCVLibrary320\build.gradle文件修改为:

        10. 检查一下项目根目录的build.gradle文件是否为如下内容:


运行效果

共有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注