Bezier曲线 OpenCV

来源:互联网 发布:网络违法犯罪举报官网 编辑:程序博客网 时间:2024/06/12 01:46
大致要求是这样,已知数个点,需要穿过这数个点的Bezier曲线的一组控制点。代码思路主要是参照[AGG贝塞尔插值](http://www.antigrain.com/research/bezier_interpolation/index.html#PAGE_BEZIER_INTERPOLATION),这里有中文翻译版[中文翻译](http://blog.csdn.net/microchenhong/article/details/6316332)。文章中主要是利用三角形的腰,平移到端点实现的。处理的效果的确不错,后面也给了实现代码,但是有一点说的很明白,代码是未曾优化过的。处理图最终达到这样的效果,又需要怎样的优化,这才是麻烦所在。最终选定的方法,与文章中有所区别。![谜一样的图](http://img.blog.csdn.net/20170804095916945?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzM5OTE1MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)当前点为A,标注红色的地方都是垂直的。D、E分别是AB、AC的中点,FAG所在直线与DE平行,F是D在FaG上的投影,G是E在FAG上的投影。以F、G作为A生成的控制点。起始点B点生成的控制点是F点参照AB中垂线生产的镜像点。这种方法的好处是所有控制点都是收缩的。而上面文章中使用的方法,对于一些特殊情况,会出现控制点的位置(x,y)中存在负数,当然,里面提出的K系数也能解决这个问题。![这里写图片描述](http://img.blog.csdn.net/20170804101239956?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzM5OTE1MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)//MyMidPoint2和两个BezierPointLocateX、Y是最后用上的。代码:http://download.csdn.net/detail/u013399150/9920896
原创粉丝点击