Bezier曲线 OpenCV

大致要求是这样,已知数个点,需要穿过这数个点的Bezier曲线的一组控制点。

代码思路主要是参照[AGG贝塞尔插值](http://www.antigrain.com/research/bezier_interpolation/index.html#PAGE_BEZIER_INTERPOLATION),这里有中文翻译版[中文翻译](http://blog.csdn.net/microchenhong/article/details/6316332)。
文章中主要是利用三角形的腰,平移到端点实现的。处理的效果的确不错,后面也给了实现代码,但是有一点说的很明白,代码是未曾优化过的。处理图最终达到这样的效果,又需要怎样的优化,这才是麻烦所在。
最终选定的方法,与文章中有所区别。
![谜一样的图](https://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系数也能解决这个问题。
![这里写图片描述](https://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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值