opencv学习笔记[11]:绘图

1.直线

 1 #include <cv.h>
 2 #include <highgui.h>
 3 
 4 int main()
 5 {
 6     IplImage *line = cvLoadImage("I:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\airplane.png");
 7     CvPoint point1 = cvPoint(100,100);
 8     CvPoint point2 = cvPoint(200,200);
 9     //float vals[]={};
10     CvScalar color = cvScalar(0,0,0,0);
11     cvLine(line,point1,point2,color,10);
12 
13     cvNamedWindow("test");
14     cvShowImage("test",line);
15 
16     cvWaitKey();
17     cvReleaseImage(&line);
18 }

2.矩形

 1 #include <cv.h>
 2 #include <highgui.h>
 3 
 4 int main()
 5 {
 6     IplImage * rec = cvLoadImage("I:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\airplane.png");
 7     CvPoint point1 = cvPoint(100,100);
 8     CvPoint point2 = cvPoint(200,200);
 9     //float vals[]={};
10     CvScalar color = cvScalar(0,0,0,0);
11     cvRectangle(rec,point1,point2,color,2);
12 
13     cvNamedWindow("test");
14     cvShowImage("test",rec);
15 
16     cvWaitKey();
17     cvReleaseImage(&rec);
18 }

3.圆形

 1 #include <cv.h>
 2 #include <highgui.h>
 3 
 4 int main()
 5 {
 6     IplImage * circle = cvLoadImage("I:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\airplane.png");
 7     CvPoint center = cvPoint(200,200);
 8     //float vals[]={};
 9     int radius = 100;
10     CvScalar color = cvScalar(0,0,0,0);
11     cvCircle(circle,center,radius,color,-1);
12 
13     cvNamedWindow("test");
14     cvShowImage("test",circle);
15 
16     cvWaitKey();
17     cvReleaseImage(&circle);
18 }

4.椭圆

如下是绘制椭圆的一般方法:

 1 #include <cv.h>
 2 #include <highgui.h>
 3 
 4 int main()
 5 {
 6     IplImage * ellipse = cvLoadImage("I:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\airplane.png");
 7     CvPoint center = cvPoint(200,200);
 8     CvSize axes = cvSize(100,200);//width = 100 height = 200
 9     double angle = 0;
10     double start_angle = 0;
11     double end_angle = 360;
12     CvScalar color = cvScalar(0,0,0,0);
13 
14     cvEllipse(ellipse,center,axes,angle,start_angle,end_angle,color,5);
15 
16     cvNamedWindow("test");
17     cvShowImage("test",ellipse);
18 
19     cvWaitKey();
20     cvReleaseImage(&ellipse);
21 }

如下是利用外界矩形描绘椭圆的方法:

 typedef struct CvBox2D
 {
     CvPoint2D32f center; /* 盒子的中心 */
     CvSize2D32f size; /* 盒子的长和宽 */
     float angle; /* 水平轴与第一个边的夹角,用弧度表示*/
 }CvBox2D;

 1 #include <cv.h>
 2 #include <highgui.h>
 3 
 4 int main()
 5 {
 6     IplImage * ellipsebox = cvLoadImage("I:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\airplane.png");
 7     CvPoint center = cvPoint(200,200);
 8     CvBox2D box;
 9     box.center = cvPoint2D32f(200,200);
10     box.angle = 0;
11     box.size = cvSize2D32f(100,200);
12     CvScalar color = cvScalar(0,0,0,0);
13 
14     cvEllipseBox(ellipsebox,box,color,5);
15 
16     cvNamedWindow("test");
17     cvShowImage("test",ellipsebox);
18 
19     cvWaitKey();
20     cvReleaseImage(&ellipsebox);
21 }

5.文字

  利用OpenCV进行英文字符串的书写是很容易的。只需要调用cvPutText()函数即可。该函数的申明如下所示:

  cvPutText(CvArr* img, const char* text, CvPoint origin, const CvFont* font, CvScalar color);函数中各个参数的含义如下所示:

  img---图片指针(需要说明的是,CvArr* 等价于void*,一般我们在这里传递一个IplImage*);

  text---显然是需要打印到图片上的字符串的内容;

  origin---字符串在图片上打印的原点(即,字符串的左下角在图片中的位置)

  font---描述字体属性的变量;

  color---字体的颜色;

  上面函数中出现了一个较为生僻的变量CvFont*,从名称不难发现,该类型用于进行字符属性的描述;需要刻意提醒的是,CvFont类型的指针并不能像CvMat或  IplImage类型的指针那样,存在一个cvCreate**之类的函数对其进行初始化。CvFont类型变量的初始化是通过函数cvInitFont来实现的;该函数的申明如下所示:

  void cvInitFont(CvFont* font, int font_face, double h_scale, double v_scale, double shear=0, int thickness=1, int line_type=8);

该函数中各个变量的含义如下所示:

font---传入及传出的字体属性类型指针;

font_face---表示字体的类型,其取值只能为以下数值之一:

1. CV_FONT_HERSHEY_SIMPLEX

2. CV_FONT_HERSHEY_PLAIN

3. CV_FONT_HERSHEY_DUPLEX

4. CV_FONT_HERSHEY_COMPLEX

5. CV_FONT_HERSHEY_TRIPLEX

6. CV_FONT_HERSHEY_COMPLEX_SMALL

7. CV_FONT_HERSHEY_SCRIPT_SIMPLEX

8. CV_FONT_HERSHEY_SCRIPT_COMPLEX

h_scale---只能为1或0.5,表示水平方向字体的缩放系数;

v_scale---只能为1或0.5,表示垂直方向字体的缩放系数;

shear---取值从0---1,表示字体的倾斜程度,0表示不倾斜,1表示倾斜45度;

thichness, line_type这两个参数同OpenCV的其它绘图函数中定义的一样,表示线型的宽度和线条的类型;

 1 #include <cv.h>
 2 #include <highgui.h>
 3 
 4 int main()
 5 {
 6     IplImage * img = cvLoadImage("I:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\airplane.png");
 7     char * text ="hello world!";
 8     CvPoint origin = cvPoint(100,150);
 9     CvFont  font;
10     cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX,1.0,1.0,0,2);
11     CvScalar color = cvScalar(0,0,0,0);
12 
13     cvPutText(img,text,origin,&font,color);
14 
15     cvNamedWindow("test");
16     cvShowImage("test",img);
17 
18     cvWaitKey();
19     cvReleaseImage(&img);
20 }

posted on 2013-03-05 15:41  0fengfan0  阅读(475)  评论(0编辑  收藏  举报

导航