在c++中实现warp/liquify工具

Implementing the warp/liquify tool in C++

本文关键字:liquify 工具 warp 实现 c++      更新时间:2023-10-16

我正在寻找一种方法来扭曲图像,类似于liquify/IWarp工具在Photoshop/Gimp中的工作方式。

我想用它来移动图像上的几个点,使它看起来比原来更宽。

谁有什么可以用来做这件事的库的想法?我目前在同一个项目中使用OpenCV所以如果有方法使用它会很简单但我对任何东西都是开放的

谢谢。

编辑:这是我想做的一个例子https://i.stack.imgur.com/LJdWF.png我所做的就是把一些点拉到旁边这就是我想在应用程序中做的

从这个搜索'image warp operator source c++'我得到:

…增加了函数'CImg::[get_]warp()',可以使用变形....扭曲图像新增功能'CImg::save_cpp()'允许直接将图像保存为C/c++源代码. ...

OpenCV的remap可以做到这一点。你只需要提供x和y的位移图。如果你聪明的话,我建议你可以直接创建位移图,这对于类似于Photoshop的liquify的笔触操作来说是很好的。网格扭曲和稀疏点映射方法是另一种选择,但本质上是基于插值计算位移图。

您可能想看看http://code.google.com/p/imgwarp-opencv/。这个库似乎正是你所需要的:基于稀疏网格的图像扭曲。

另一个选择当然是自己生成位移并使用OpenCV的cv::Remap()函数