第1章 树莓派上的卡通化和皮肤颜色分析
本章将介绍如何针对台式机和小型嵌入式系统,如树莓派(Raspberry Pi),编写图像处理滤波器。首先在台式机上(用C/C++)开发,然后移植到树莓派上,这是嵌入式设备开发所推崇的方式。本章将介绍以下主题:
●如何将现实生活中的图像转换为素描
●如何将图像转换为绘画并将素描叠加上去生成卡通画
●用恐怖的邪恶模式来创建坏人形象
●通过基本的皮肤检测器和皮肤变色器,给某人绿色的外星人皮肤
●最后,如何基于桌面应用程序来创建嵌入式系统
请注意,嵌入式系统大多是放置在产品或设备内的计算机主板,旨在执行特定任务,树莓派则是建立嵌入式系统的非常低成本和流行的主板:
上面的图片展示了在本章学习之后的成果:你可以戴着一个有由电池供电的树莓派加屏幕参加漫展,把每个人都变成卡通人物!
本章希望使相机拍摄的现实世界看起来像卡通画一样。其基本思路是使用一些颜色来填充平整的部分,然后用粗线来绘制图像较为明显的边缘。换言之,就是使平整区域变得更平,边缘变得更清晰。我们将检测边缘,平滑平整区域,并重新绘制明显的边缘,以产生卡通或漫画书的效果。
在开发嵌入式计算机视觉系统时,最好先创建一个完整的桌面应用版本,再移植到嵌入式系统,因为开发和调试桌面程序比嵌入式系统更容易!因此,本章将从一个完整的卡通化桌面应用开始,读者可使用任何自己喜欢的IDE(如,Visual Studio、XCode、Eclipse或QtCreator)。当其在PC上正确运行后,我们将在最后一节介绍如何基于桌面版本创建嵌入式系统。许多嵌入式项目需要为嵌入式系统定制一些代码,例如使用不同的输入和输出,或者针对特定平台进行代码优化。然而,对于本章,我们实际上将在嵌入式系统和桌面上运行相同的代码,因此我们只需创建一个项目。
本应用程序使用OpenCV GUI(图形用户界面)窗口,初始化相机,并在处理相机的每帧时都调用cartoonifyImage()函数,该函数包含了本章的大多数代码。然后将处理后的图像显示在GUI窗口中。本章将介绍如何使用USB网络摄像头从零开始创建桌面应用程序,以及利用树莓派相机模块,创建基于此桌面应用程序的嵌入式系统。因此,首先你可以选择喜欢的IDE来创建桌面应用程序,其中包含GUI代码的main.cpp文件含有以下片段,例如主循环、摄像头功能以及键盘输入,同时,还要创建一个用于图像处理操作的cartoon.cpp文件,它包含一个cartoonifyImage()函数,本章大多数代码都会放在此函数中。