3.自定义应用
到目前为止,已经完成了整个Android 卡通化应用的创建,读者可从中了解该应用工作的基本原理和各部分的功能;也可以自定义该应用!比如:可修改GUI、应用的状态和工作流、卡通化滤波器常量、皮肤检测算法,或根据读者自己的想法来替代卡通化代码。
可用很多方法来改进皮肤检测算法,比如:使用更复杂的皮肤检测算法(如:通过一些最近的CVPR或ICCV国际会议论文来训练高斯模型,这些论文可在下载)或将人脸检测算法(见第8章)加到皮肤检测器中,这样做是为了能直接检测用户的脸而不是叫用户将他们的脸放到屏幕中心。要注意:人脸检测算法在某些设备或高分辨率摄像机上运行可能会花较长时间,因此,这类方受到相对较慢的处理速度限制,但智能手机和平板电脑的处理速度每年都有很大提高,在将来这也许不是一个问题。
提高移动设备上计算机视觉应用效率的最好方法是尽可能减少摄像机分辨率(例如:用50万像素代替500万像素),尽可能少地分配和释放图像所占内存,尽可能少做图像转换(例如:整个代码都支持BGRA格式)。也可向设备的CPU供应商(例如:NVIDIA的Tegra,Texas Instruments(德州仪器)的OMAP,Samsung的Exynos, Apple的Ax,或QualComm Snapdragon)或某系列CPU供应商(如ARM的Cortex-A9)索取优化的图像处理或数学库。
另外还需注意:有可能你的设备有优化的OpenCV版本。
本书自带的ImageUtiles.cpp和imageUtils.h文件使得用户自定义NDK和桌面图像处理代码变得更容易。它包括像printMatInfo()这样的函数,该函数能打印许多关于cv:Mat对象的信息,从而使得调试OpenCV变得更加容易。另外,为了在C/C++代码中很容易地增加详细的时间统计,可用时间的宏。例如:
然后可以在控制台看到有如下信息输出:
当OpenCV并不像预期那样运行时,这种方法很有用; 实际上,移动设备开发要使用IDE调试器通常都很困难,并且printf()语句一般都不能在Android NDK工作。但ImageUtils中的函数既可工作在Android系统也可工作在桌面上。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40865-2.html
别学苏联搞冷战