如果您想自己编译此项目,您需要:
- QT version 5.9+
- OpenCV 3.2+
本项目旨在设计实现一个同时面向专业人士和普通大众的图像处理工具,既实现各种基本的专业图像处理操作,又支持一键美化图片和各种图片滤镜操作,具有功能强大、目标群众广等特点。
图像基本操作
- 图像逻辑操作
- 单通道选择
- 灰度变换
- 颜色空间变换
- 图像二值化
- 图像滤波
- 图像边检测算法
- 图像截取
- 图像腐蚀、膨胀、开操作与闭操作
- 图像直方图均衡化
经典特效
- 自动增强
- 柔光
- 暖化
- 黑白色
- 锐化
- 去雾
- 柔和
- 对比强烈
- 智能绘色
- 全彩
- 反色
艺术特效
- 浮雕
- 雕刻
- 虚幻
- 惊悚
- 磨砂质感
- 手稿
- 油画
- 木刻
- 回忆
- 冰冻
- 熔铸
- 黑白漫画
本项目基于QT5.9
和OpenCV3.2
实现。
整体架构基于MVVM
(Model-View-ViewModel
)实现。
在开发过程中,使用了appveyor
工具实现了持续集成。
整体代码相对干净,如果您有意进行二次开发,可以看下面的介绍。
每实现一个新功能需要增加一个对应的command
类,command本身存在于ViewModel中,并提供get方法给View层进行set方法实现绑定,从而事先View->ViewModel的通信。
ViewModel执行Command的过程是调用Model中对应方法进行数据操作的过程。
在Model层完成数据操作之后,通过一个通知(绑定方式类似于command)来实现model与ViewModel的通信。
在此之后,ViewModel通过通知告诉View更新显示窗口。
二次开发只需增加相应的Command类并在model中实现功能,并讲command和notification绑定好即可。
较详细介绍在DOC中。
在View
层进行操作之后,会触发对应槽函数,该槽函数会准备好参数Parameter
交给对应的Command
,然后执行exec()
这个command,exec会解出参数交给ViewModel
层,ViewModel
调用Model
里对应的方法,进行数据操作,Model
操作完之后会通知ViewModel
更新显示数据,ViewModel
会通知View
刷新显示。
- 组长:
- 黄文璨:
MVVM
框架搭建View
层以及ViewModel
层的主要实现
- 黄文璨:
- 组员:
- 叶昕洋 :滤镜算法层的主要实现
- 林锦铿 :
Appveyor
配置、Model
层与ViewModel
层的主要实现