1.矩形图像的绘制:
原函数:void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8,int shift=0)
img就是需要绘制的图像
pt1 and pt2表示矩形的对角线上的两个点
color表示绘制线条的颜色
thickness表示线条的粗细程度,负数表示将其填充
line_type表示线条类型
shift表示做标点的小数点位数
例如:
//Rectangle
int main(){
IplImage* img_temp = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
//绘制三个矩形
cvRectangle(img_temp,cvPoint(10,10),cvPoint(300,300),CV_RGB(255,255,255),8,8,1);
cvRectangle(img_temp,cvPoint(350,350),cvPoint(500,500),CV_RGB(111,111,111),-1,3,1);//填充
cvRectangle(img_temp,cvPoint(550,550),cvPoint(620,620),CV_RGB(100,20,95),1,1,1);
cvNamedWindow("Rectangle",1); cvShowImage("Rectangle",img_temp); cvWaitKey(0);
cvReleaseImage(&img_temp);
cvDestroyWindow("Rectangle"); }
结果:
2.圆形图像的绘制:
原函数:void cvCircle(CvArr* img, CvPoint center,int radius,CvScalar color,int thickness=1 ,int line_type=8,int shift=0);
center为圆心坐标
radius为半径
其他参数参照矩形函数
例子:
void circle(){
IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
cvCircle(img,cvPoint(250,250),200,CV_RGB(100,20,95),1,8,1);
cvCircle(img,cvPoint(250,250),100,CV_RGB(100,20,95),-1,8,1);//填充
cvCircle(img,cvPoint(250,250),50,CV_RGB(100,111,111),-1,8,1);
cvNamedWindow("Circle",1);
cvShowImage("Circle",img);
}
结果:
3.直线的绘制:
原函数:void cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1,int line_type=8, int shift=0);
pt1 and pt2 表示线的两端
其他参数见上面的说明
例子:
void line(){
IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
cvLine(img,cvPoint(100,250),cvPoint(400,250),CV_RGB(111,12,200),1,8,1);
cvLine(img,cvPoint(250,100),cvPoint(250,400),CV_RGB(111,12,200),2,8,1);
cvLine(img,cvPoint(100,100),cvPoint(400,400),CV_RGB(111,12,200),3,8,1);
cvLine(img,cvPoint(400,100),cvPoint(100,400),CV_RGB(111,12,200),4,8,1);
cvNamedWindow("Line",1);
cvShowImage("Line",img);
}
结果:
4.多边形的绘制:
原函数:void cvPolyLine(CvArr* img, CvPoint** pts, int* npts, int contours, int is_closed, CvScalar color, int thickness=1, int line_typw=8, int shift=0);
pts 表示折线的顶点指针数组。
npts表示折线的定点个数数组。也可以认为是pts指针数组的大小
contours表示折线的线段数量。
is_closed 图形是否封闭
其他参数参照上面
例子:
void poly(){
IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
CvPoint curve_1[] = {10,10, 30,730, 750,730, 730,10, 400,400};
CvPoint curve_2[] = {20,20, 20,100, 200,100};
CvPoint* curveArr[2] = {curve_1,curve_2};
int nCurvePts[2] = {5,3};
int nCurves = 2;//两个图形
int isCurveClosed = 1;
//两个封闭的多边形
cvPolyLine(img,curveArr,nCurvePts,nCurves,isCurveClosed,CV_RGB(100,0,200),1,8,1);
cvNamedWindow("poly",1);
cvShowImage("poly",img);
}
结果:
5.图像文本的输入:
原函数:void cvInitFont(CvFont* font, int font_face,double hscale, double vscale,double shear=0,int thickness=1,int line_type=8);
font字体结构体
font_face表示字体名称ID
hscale表示字体宽度
vscale表示字体高度。
shear表示字体的斜度。当值为0时 ,字符不倾斜;当值为1.0f时,字体倾斜大约45度
字体识别码:
CV_FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。
CV_FONT_HERSHEY_PLAIN - 小号无衬线字体。
CV_FONT_HERSHEY_DUPLEX - 正常大小无衬线字体。
CV_FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。
CV_FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体
CV_FONT_HERSHEY_COMPLEX_SMALL - CV_FONT_HERSHEY_COMPLEX 的小译本。
CV_FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体
例子:
void put_text(){
IplImage* img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,3);
CvFont font;
cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC,1.0,1.0,0,1,8);
cvPutText(img,"Test Test",cvPoint(100,100),&font,CV_RGB(100,111,200));
cvNamedWindow("put_text",1);
cvShowImage("put_text",img);
}
结果:
That's all!!
下面就是视频方面的部分了,继续继续!!!!