编辑:OAK中国
首发:luxonis.com
喜欢的话,请多多👍⭐️✍
内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。
▌前言
Hello,大家好,这里是OAK中国,我是助手君。
最近发现DepthAI新增了一个节点,应该会有朋友需要,所以写了这篇博客说明一下!
▌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 - ImgFrame
● out - ImgFrame
▌用法
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
https://docs.oakchina.cn/en/latest/
https://www.oakchina.cn/selection-guide/
OAK中国
| OpenCV AI Kit在中国区的官方代理商和技术服务商
| 追踪AI技术和产品新动态
戳「+关注」获取最新资讯↗↗