资源简介
b样条的具体实现,并用opencv绘制。利用opencv2的库,如果用户使用的是其他版本,可以在项目属性中更改相应的选项。
代码片段和文件信息
#include“cv.h“
#include“cxcore.h“
#include“highgui.h“
#include“stdio.h“
#include“math.h“
#define line_type CV_AA
#define n 7
#define m 20
float x[n+1]={320100100320600600320100};
float y[n+1]={24040010024050430240400};
CvPoint p1;
CvPoint p2;
void main()
{
CvScalar color=CV_RGB( 0 255 0 );
IplImage *img = cvCreateImage(cvSize(650500)IPL_DEPTH_8U3);
cvNamedWindow(“image“CV_WINDOW_AUTOSIZE);
cvZero(img);//设置背景色为黑色
/*for (int h = 0; hheight ; h++)//设置窗口背景白色
{
for(int w = 0 ; wwidth*3 ; w++)
{
((uchar*)((int)img->imageData +img->widthStep*h))[w] = (uchar) 255; //将背静改为黑色
}
}*/
float XYU;
p1.x=x[0];
p1.y=500-y[0];//将点描到窗口下侧
color=CV_RGB( 255 255 255 );
for(int i=1;i<=n;i++)
{
p2.x=x[i];
p2.y=500-y[i];
cvLine( imgp1p2color);//画直线
p1.x=p2.x;
p1.y=p2.y;
}
//color=CV_RGB( 200 111 0 );
for(int k=0;k<=n-2;k++)
{
X=(x[k]+x[k+1])/2;
Y=(y[k]+y[k+1])/2;
p1.x=X;
p1.y=500-Y;
U=0.0;
for(int j=1;j<=m;j++)
{
U=U+1.0/m;
X=U*U/2*(x[k]-2*x[k+1]+x[k+2])+U*(x[k+1]-x[k])+(x[k]+x[k+1])/2;
Y=U*U/2*(y[k]-2*y[k+1]+y[k+2])+U*(y[k+1]-y[k])+(y[k]+y[k+1])/2;
p2.x=X;
p2.y=500-Y;
cvLine( imgp1p2color);
p1=p2;
}
}
//cvLine( imgp1p2color);
cvShowImage(“image“img);//销毁窗口
cvWaitKey(0);
cvReleaseImage(&img);//释放指针
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 381316 2011-11-09 13:16 b样曲线\Debug\opencv1.ilk
文件 1447 2011-11-09 13:16 b样曲线\opencv1\a.cpp
文件 8142 2011-11-09 13:16 b样曲线\opencv1\Debug\BuildLog.htm
文件 3985 2011-11-08 10:13 b样曲线\opencv1\opencv1.vcproj
文件 1417 2011-11-16 19:35 b样曲线\opencv1\opencv1.vcproj.Luoshen-PC.Luoshen.user
文件 13757440 2011-11-16 19:35 b样曲线\opencv1.ncb
文件 887 2011-11-08 10:08 b样曲线\opencv1.sln
..A..H. 9216 2011-11-16 19:35 b样曲线\opencv1.suo
目录 0 2011-11-16 19:35 b样曲线\opencv1\Debug
目录 0 2011-11-16 19:35 b样曲线\Debug
目录 0 2011-11-09 13:16 b样曲线\opencv1
目录 0 2011-11-09 13:15 b样曲线
----------- --------- ---------- ----- ----
14163850 12
- 上一篇:MFC可视化五子棋游戏
- 下一篇:四子棋智能下棋C语言实现
评论
共有 条评论