在Web服务器上绘制带有扭曲三角形的图像

epo*_*gee 7 cgi image-manipulation imagemagick

场景

我当前项目的Flash前端生成Web服务器需要组合成视频的图像.帧速率和帧分辨率都足够大,以至于将图像序列发送到后端是不可行的(在时间和客户端带宽中).相反,我们也试图在后端重新创建图像.

正确和缓慢,或不正确和快速

问题在于这涉及到相当多的绘制纹理三角形,我们在Python中找到的两个解决方案(这里那里)效率很低,每帧绘图大约需要60秒,导致高达7.5小时的处理时间30秒剪辑的时间.不能接受的.

当使用PHP模块向ImageMagick发送命令进行图像处理时,整个过程非常快(每帧十分之一秒),但ImageMagick似乎无法像我们在前端那样绘制三角形,所以最终的结果不符合.不能接受的.

我在这里问的是,是否有人知道如何解决这个问题,通过任何必要的方式在Web服务器上运行.

扭曲图像

让我来解释一下前端的过程:

  1. 对图像中的点执行Delaunay计算,以获得均匀分布的三角形网格.
  2. 偏移网格中的点/顶点,扭曲或扭曲图像.
  3. 在新位图上绘制扭曲的三角形.

左侧是原始图像,右侧是扭曲图像

我们可以将步骤1和2的结果(坐标)发送到后端,然后绘制扭曲的三角形并将其保存到磁盘上的图像(或作为帧添加到视频中).但最后一步是我需要帮助的.

问题

ImageMagick有替代方法可以在位图中绘制三角形吗?是否有其他库,如C库,可以让我们这样做?或者我们可以通过切换后端技术(如Ruby)来更轻松地实现这一效果吗?(不幸的是,.Net和Java现在不是真正的选择)

非常感谢.EP.

PS我很欣赏重新标记的工作,我不太清楚这个问题上的标签.谢谢!

Eri*_*ric 0

Opencv 是一个 ac 库,支持多种类型的图像变形和合成。