在这个人人自拍的年代,每个人的智能手机中至少都装了一款美颜相机或者美图软件,而这些软件实现美图功能又主要是靠滤镜来实现的。而这个项目使用 Python 编写一个简单的滤镜程序。
效果截图
先来展示一下滤镜的效果。
这是原图:
原图
使用 nashville 滤镜之后:
使用 nashville 滤镜之后
使用 country 滤镜之后:
使用 country 滤镜之后
涉及知识点:
该项目开发会接触到以下知识点:
使用 docopt 构建命令行解析器
使用 struct 模块解析 ACV 格式文件
Pillow 图像操作
开发步骤:
依赖模块安装
numpy 安装
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的前身Numeric最早是由Jim Hugunin与其它协作者共同开发,2005年,Travis Oliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其它扩展而开发了NumPy。
NumPy参考CPython(一个使用字节码的解释器),而在这个Python实现解释器上所写的数学算法代码通常远比编译过的相同代码要来得慢。为了解决这个难题,NumPy引入了多维数组以及可以直接有效率地操作多维数组的函数与运算符。因此在NumPy上只要能被表示为针对数组或矩阵运算的算法,其运行效率几乎都可以与编译过的等效C语言代码一样快。
安装步骤如下:
$ sudo python3 -m pip install --upgrade pip
$ sudo pip3 install numpy
Scipy 安装
SciPy是一个开源的Python算法库和数学工具包。SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Scipy 的安装方法如下:
$ sudo pip3 install scipy
Pillow 安装
Pillow 是 Python 的图像处理库。
安装方法依然方便快捷。
$ sudo pip3 install pillow
docopt 安装
docopt 能自动地根据帮助文档构建出命令行解析器,然后从 Shell 操作命令中解析出参数字段。
使用 pip3 进行安装。
$ sudo pip3 install docopt
编写程序
在开始讲解代码前,我们首先来考虑一下程序的功能需求。
需要构建命令行解析器从命令中解析出文件路径参数
加载图像与滤镜文件
处理图像
保存处理后的图像
需求很简单,构建命令行可以使用 docopt 模块来实现,图像处理的思路在之后会介绍,现在开始实现代码。
关于详细的开发步骤以及代码详解,点击【Python 实现简单滤镜】即可开始查看了~