我最近遇到this video并希望实现类似的功能。基本方法很明确:我必须对图像进行阈值处理,并检查虚拟对象是否与剩余的前景冲突。
我不想自己实现物理,而是使用像Box2D这样的引擎。但是如何将阈值化图像集成到物理引擎中,以便可以与虚拟对象进行交互?
答案 0 :(得分:4)
您想要进行边缘检测。有开源算法。虽然您可以按照建议进行阈值处理,但良好的边缘检测算法可以在没有这个的情况下工作,并且可能更有趣,因为您不需要纯白色背景来获得有趣的结果。查看OpenCV http://www.mathworks.com/products/imaq/demos.html?file=/products/demos/shipping/imaq/demoimaqsl_edgedetection.html作为初学者。
边缘检测器最终生成像素坐标中的矢量作为输出。您需要根据与生成边缘的视频帧相同的时间序列将这些对象转换为在程序控制下移动的Box2D b2_staticBody
对象。现在,您可以将动力学对象添加到Box2D环境中,它们的行为就像边缘是不可移动的实体一样。
Finlly你必须将Box2D输出叠加到视频帧上。 OpenCV也应该提供帮助。或者您可以使用视频编辑工具。
这将是更多的工作,但你甚至可以让它实时工作。请注意,如果您可以访问MATLAB,它在其中一个工具箱中有一个视频帧速率边缘检测器。