中国 · 南京 · 栖霞区紫东路2号紫东国际创意园B3-2幢5F
+86-18994094214 (仅工作日:8:30~17:30)
contact@oakchina.cn

❷Warp 节点

❷Warp 节点

Warp 节点用于图像扭曲和反扭曲,可用于消除来自宽 FOV 相机的图像的扭曲。该节点还可用于对图像应用透视变换。

与 ImageManip 节点(setWarpMesh () 函数)相比:

Warp 节点使用底层 warp HW 块,没有额外的资源(SHAVE/cmx 内核)。

硬件限制:宽度必须能被 16 整除。

ImageManip 节点将 warp HW 块的强大功能与 CMX 内存的效率相结合,以实现更高的吞吐量(例如 4k@30 fps)。 HW 块的调度由 SHAVE 内核完成,它还进行颜色空间转换、类型转换(YUV420 到 NV12)等。使用 ImageManip 节点的缺点是额外的 RAM 和 SHAVE 使用。

▌如何放置 

Python

pipeline = dai.Pipeline()
warp = pipeline.create(dai.node.Warp)

C++

dai::Pipeline pipeline;
auto warp = pipeline.create<dai::node::Warp>();

▌输入和输出

             ┌────────────┐
  inputImage │            │    out
  ──────────►│    Warp    ├──────►
             │            │
             └────────────┘

消息类型

▌用法 

Python

pipeline = dai.Pipeline()

warp = pipeline.create(dai.node.Warp)
# 创建一个自定义的 Warp Mash
p1 = dai.Point2f(20, 20)
p2 = dai.Point2f(460, 20)
p3 = dai.Point2f(20, 460)
p4 = dai.Point2f(460, 460)
warp.setWarpMesh([p1,p2,p3,p4], 2, 2)
warp.setOutputSize((512,512))
warp.setMaxOutputFrameSize(512 * 512 * 3)
# 要使用的 Warp 引擎 (0,1,2)
warp.setHwIds([1])
# Warp 插值模式,在BILINEAR, BICUBIC, BYPASS之间选择
warp.setInterpolation(dai.node.Warp.Properties.Interpolation.BYPASS)

C++

dai::Pipeline pipeline;

auto warp = pipeline.create<dai::node::Warp>();
// 创建一个自定义的 Warp Mash
dai::Point2f p1(20, 20);
dai::Point2f p2(460, 20);
dai::Point2f p3(20, 460);
dai::Point2f p4(460, 460);
warp->setWarpMesh({p1,p2,p3,p4}, 2, 2);
warp->setOutputSize({512, 512});
warp->setMaxOutputFrameSize(512 * 512 * 3);
// 要使用的 Warp 引擎 (0,1,2)
warp->setHwIds({1});
// Warp 插值模式,在BILINEAR, BICUBIC, BYPASS之间选择
warp->setInterpolation(dai::node::Warp::Properties::Interpolation::BYPASS);

▌功能示例 

  • Warp Mesh: 此示例显示了使用 Warp 节点来扭曲输入图像帧。
  • Interactive Warp Mesh: 此示例显示了使用 Warp 节点来扭曲输入图像帧。它让您交互式地改变网格点来扭曲图像。更改点后,用户必须按 r 重新启动管道并应用更改。

▌参考 

https://docs.luxonis.com/projects/api/en/latest/components/nodes/warp/#reference

索引