OpenCV学习笔记(一):如何绘图

来源:互联网 发布:矩阵与行列式的区别 编辑:程序博客网 时间:2024/06/05 01:59

由于网上关于如何配置VS的环境的文章已经很多了,所以在此不再赘述,直接进入正题;因为,在读研期间研究方向上需要计算机视觉的部分,所以开始学习OpenCV,从今天(03.12.2016)开始,我会时不时得把学习过程中的知识点记录下来。
编译环境说明:windows8.1 + opencv2.4.10 + VS2010

OpenCV提供了一些基本的绘图操作,比如画圆,画椭圆,画线,画矩形,在图像里插入文字等功能。

1.circle(圆)

1.1circle构造函数:

//! draws the circle outline or a solid circle in the imageCV_EXPORTS_W void circle(CV_IN_OUT Mat& img, //图像Point center, //圆心int radius,//半径const Scalar& color,//颜色 int thickness=1,//粗细                     int lineType=8, //线型int shift=0//移动);

其中,必须提供的参数是:点坐标,圆心,半径,以及画线的颜色。

1.2circle(圆)demo

    Point center = Point(255,255);//圆心    int r = 100;//半径    //图像    Mat picture(500,500,CV_8UC3,Scalar(255,255,255));    //参数为 图像、 圆心、 半径、 颜色、粗细、线型    circle( picture, center, r, Scalar(0,0,0), 1, 8);    imshow("画板",picture);    waitKey(6000);

其可以把线的粗细设置为-1来画实心的图形。
粗细=1
粗细=-1

2.ellipse(椭圆)

2.1ellipse构造函数

//! draws an elliptic arc, ellipse sector or a rotated ellipse in the imageCV_EXPORTS_W void ellipse(CV_IN_OUT Mat& img, //图像Point center, //圆心Size axes,//轴的长度double angle, //径向夹角(水平面到长轴的夹角)double startAngle, //径向夹角(水平面到长轴的夹角)double endAngle,//结束角度(长轴到结束点的夹角)const Scalar& color, //颜色int thickness=1,//粗细int lineType=8, //线条的类型,见CVLINE的描述。int shift=0//圆心坐标点和数轴的精度);

2.2ellipse(椭圆)demo

ellipse(picture,center,Size( 250, 100 ),0,30,240,Scalar(0,0,0));

椭圆
函数cvEllipse用来绘制或者填充一个简单的椭圆弧或椭圆扇形。圆弧被ROI矩形所忽略。反走样弧线和粗弧线使用线性分段近似值。所有的角都是以角度的形式给定的。下面的图片将解释这些参数的含义。

Parameters of Elliptic Arc
Parameters of Elliptic Arc

3.line(直线)

3.1line构造函数

//! draws the line segment (pt1, pt2) in the imageCV_EXPORTS_W void line(CV_IN_OUT Mat& img, //图像Point pt1, //起始点Point pt2, //结束点const Scalar& color,//颜色int thickness=1, //粗细int lineType=8, //线型int shift=0//偏移);

3.2line(直线)demo

    //画线    Point a = Point (100,100);    //参数为:图像、起始点、结束点、颜色、粗细、线型    line(picture,a,center,Scalar(255,0,0));    imshow("画板",picture);

直线


4.rectangle(矩形)

4.1rectangle构造函数

//! draws the rectangle outline or a solid rectangle with the opposite corners pt1 and pt2 in the imageCV_EXPORTS_W void rectangle(CV_IN_OUT Mat& img, Point pt1, //矩形的一个顶点。Point pt2, //矩形对角线上的另一个顶点const Scalar& color, //线条颜色。int thickness=1,//组成矩形的线条的粗细程度。                //取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形int lineType=8, //线型int shift=0//坐标点的小数点位数 );

4.2rectangle(矩形)demo

draws the rectangle outline or a solid rectanglewith the opposite corners pt1 and pt2 in the image
通过对角线上的两个顶点绘制矩形

//为了方便展示什么叫做  根据对角线两个顶点绘制矩形//现在把上面把绘画直线的用到的那两个【起始点】和【终点】作为矩形的两个对角点//并把直线的颜色更改为 红色  对比显示    //画线    Point a = Point (100,100);    //参数为:图像、起始点、结束点、颜色、粗细、线型    line(picture,a,center,Scalar(0,0,255));    imshow("画板:直线",picture);    //画矩形    //参数为:承载的图像、顶点、对角点、颜色(这里是蓝色)、粗细、大小    rectangle(picture,a,center,Scalar(255,0,0));    imshow("画板:矩形",picture);

矩形


5.putText(插入文字)

5.1putText构造函数

//! renders text string in the imageCV_EXPORTS_W void putText( Mat& img, //图像const string& text,//插入的文字Point org,//文字的位置(文本框左下角) int fontFace, //字体double fontScale, //字体大小Scalar color,//颜色                 int thickness=1, int lineType=8,                   bool bottomLeftOrigin=false );

5.2putText(插入文字)demo

//插入文字//参数为图像,插入的文字,文字的位置(文本框左下角),字体,大小,颜色string words= "XiDianCoder";putText( picture, words, Point(picture.rows/2,picture.cols/4),CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 0, 0) );imshow("画板:插入文字",picture);

插入文字


源码:http://download.csdn.net/detail/xidiancoder/9459429


仅供学习交流,如有错误,敬请指正,谢谢!!!

0 0
原创粉丝点击