/ImageBeautify

A simple "Image Show Show" develop software.

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Image Beautify

0. Build Requirements

如果您想自己编译此项目,您需要:

  • QT version 5.9+
  • OpenCV 3.2+

1.需求分析

本项目旨在设计实现一个同时面向专业人士和普通大众的图像处理工具,既实现各种基本的专业图像处理操作,又支持一键美化图片和各种图片滤镜操作,具有功能强大、目标群众广等特点。

2.功能实现

图像基本操作

  • 图像逻辑操作
  • 单通道选择
  • 灰度变换
  • 颜色空间变换
  • 图像二值化
  • 图像滤波
  • 图像边检测算法
  • 图像截取
  • 图像腐蚀、膨胀、开操作与闭操作
  • 图像直方图均衡化

经典特效

  • 自动增强
  • 柔光
  • 暖化
  • 黑白色
  • 锐化
  • 去雾
  • 柔和
  • 对比强烈
  • 智能绘色
  • 全彩
  • 反色

艺术特效

  • 浮雕
  • 雕刻
  • 虚幻
  • 惊悚
  • 磨砂质感
  • 手稿
  • 油画
  • 木刻
  • 回忆
  • 冰冻
  • 熔铸
  • 黑白漫画

3.项目概况

本项目基于QT5.9OpenCV3.2实现。

整体架构基于MVVM(Model-View-ViewModel)实现。

在开发过程中,使用了appveyor工具实现了持续集成。

整体代码相对干净,如果您有意进行二次开发,可以看下面的介绍。

4.二次开发

每实现一个新功能需要增加一个对应的command类,command本身存在于ViewModel中,并提供get方法给View层进行set方法实现绑定,从而事先View->ViewModel的通信。

ViewModel执行Command的过程是调用Model中对应方法进行数据操作的过程。

在Model层完成数据操作之后,通过一个通知(绑定方式类似于command)来实现model与ViewModel的通信。

在此之后,ViewModel通过通知告诉View更新显示窗口。

二次开发只需增加相应的Command类并在model中实现功能,并讲command和notification绑定好即可。

5.框架介绍

较详细介绍在DOC中。

整体流程

View层进行操作之后,会触发对应槽函数,该槽函数会准备好参数Parameter交给对应的Command,然后执行exec()这个command,exec会解出参数交给ViewModel层,ViewModel调用Model里对应的方法,进行数据操作,Model操作完之后会通知ViewModel更新显示数据,ViewModel会通知View刷新显示。

6.小组成员

  • 组长:
    • 黄文璨MVVM框架搭建 View层以及ViewModel层的主要实现
  • 组员:
    • 叶昕洋 :滤镜算法层的主要实现
    • 林锦铿Appveyor配置、Model层与ViewModel层的主要实现