引
这学期开学的时候实验室接了个项目,要做一个类似Adobe Illustrator中的“操纵扭曲”功能的Demo
就像这样
需求分析
可见需要实现的功能核心就是通过鼠标的拖拽对图像进行扭曲变形,这里的变形主要可以分为两类:
-
鼠标拖拽导致的普通变形
-
在某一固定锚点基础上的旋转式变形
确定方案
明确了这个后我便开始查阅资料,发现这篇paper 《Image Deformation Using Moving Least Squares》 中利用了MLS移动最小二乘来实现图像变形,其实现的效果和我们的目标极为相似,于是我也决定利用该算法来实现这个Demo
由于要利用鼠标拖拽进行操作,便选择使用Qt来进行图形化界面设计,然鹅我以前也没有用过Qt,因此学习了一些Qt基本知识
开始吧
明确了方案和目标后,便开始了漫长的学习+实践:
在进行到这里之后,发现程序无法实现对某个关节的单独拉伸,于是我们考虑寻找图像中的骨骼,在关节的交点添加一些锚点进行固定
实现效果
最终项目完成,实现了这些功能,如图是个小小的演示
本文将会持续更新