我目前有一个使用opencv进行修改的iplimage。我需要绘制类似于二次方程抛物线的弧线,并且我无法使用opencv中内置的基本绘图函数创建弧线。我一直在研究opengl,但我所能找到的都是贝塞尔曲线。什么是最好的图书馆来实现这一目标?在IplImage上绘制一个二次弧
0
A
回答
0
我不会推荐移动到OpenGL(根据您在帖子中提供的内容)。
如果你想采取一个简单的方法,你可以逐点求解二次方程(即假设x是自变量,然后求解y)。一旦知道了x和y,就可以在指定的点绘制颜色。我在下面提供了一个片段,说明了在OpenCV中着色像素的方法。就拿这个代码,因为它是:它为我工作,但它并没有考虑任何抗锯齿,透明,亚像素精度等
void overlay(IplImage *o, const IplImage *m, const CvScalar &color)
{
CvSize size = cvGetSize(o);
unsigned char *p1 = NULL;
unsigned char *p2 = NULL;
for (size_t r=0;r<size_t(size.height);r++)
for (size_t c=0;c<size_t(size.width);c++)
{
p1 = cvPtr2D(m, r, c);
if (p1[0] == 255)
{
p2 = cvPtr2D(o, r, c);
p2[0] = color.val[0]; // R
p2[1] = color.val[1]; // G
p2[2] = color.val[2]; // B
}
}
}
或者,你可以使用
的OpenCV的贝塞尔曲线的支持
OpenCV中支持Bezier曲线的第三方库。我过去曾尝试使用this one。通过少量计算,您可以使用加权Bezier曲线表示任意圆锥曲线。看看维基百科页面底部附近的Rational Bezier曲线部分:Bezier Curve
0
0
OpenCV cvEllipse是你所需要的。请注意如何使用参数。
cvEllipse(CvArr * IMG,CvPoint中心,CvSize轴,双角,双由startAngle,双endAngle,CvScalar颜色,INT厚度= 1,INT线型= 8,INT移位= 0)
相关问题
- 1. 在GPU上绘制二次曲线
- 2. 绘制一个三点弧VB.NET
- 3. 绘制的弧是一个圆圈
- 4. 在HTML5 Canvas上绘制拉伸弧
- 5. 在Silverlight中绘制弧线
- 6. 绘制弧在Java中
- 7. 在three.js中绘制圆弧
- 8. 绘制的SVG弧
- 9. 弧线,KineticJS绘制
- 10. excanvas中的绘制弧IE8到2Pi不绘制弧
- 11. 绘制二次曲线
- 12. 绘制二次曲线
- 13. 如何绘制弧上的文本?
- 14. 当前上下文中的绘制弧
- 15. 动态绘制多个绘图显示在一组轴上(一次绘制一个绘图)
- 16. 在MKMapView上的两个注释之间绘制圆弧iphone
- 17. 用three.js绘制一条开放圆弧
- 18. OpenGl/Glut:绘制第一,第二,第三个点和线段的弧/半周期
- 19. Java如何使用绘制弧和连接到另一条弧
- 20. 如何绘制2D弧
- 21. 绘制弧形three.js所
- 22. 绘制透明圆弧
- 23. 动态绘制弧形
- 24. Silverlight - 如何绘制弧线?
- 25. 绘制弧线cocos2d-html5
- 26. 在R中绘制一个圆的圆弧
- 27. 在两个3D点之间绘制一条弧线
- 28. 在Raphael绘制一个填充的180度弧线
- 29. 查找控制点以在椭圆上绘制圆弧
- 30. 在IplImage上写一个字符串
OpenCV的支持贝塞尔曲线? – Jacob
@Jacob:好 - 我不相信他们是本地支持的。我过去曾经尝试过第三方的东西。回答编辑。 – Throwback1986
我目前的x和y值约为抛物线上7点,我知道方程。我想我只是填写我认识的人之间的界限。 –