opencv学习笔记-5,绘制线条、矩形、圆、椭圆,添加文字
一、代码
#include<opencv2/opencv.hpp>
#include<highgui.h>#include<iostream>
Mat img;
void Mylines();
void Myrectangle();
void Mycircle();
void Myellipse();
int main(int argc,char**argv)
{
img=imread("1.jpg");
Mylines();
Myellipse();
Myrectangle();
Mycircle();
putText(img,"hello opencv",Point(300,300),CV_FONT_HERSHEY_COMPLEX,1.0,Scalar(25,255,255),2,8); 文字namedWindow("my picture",CV_WINDOW_NORMAL);
imshow("my picture",img);
waitKey(0);
}
void Mylines(){ 画线
Point p1=Point(20,30);
Point p2;
p2.x=20;
p2.y=200;
Scalar color=Scalar(0,0,255);
line(img,p1,p2,color,2,8);
}
void Myrectangle(){ 矩形
Rect rect=Rect(50,50,500,400);
Scalar color=Scalar(255,0,0);
rectangle(img,rect,color,2,8);
}
void Mycircle(){ 圆
//Point center=Point(img.cols/2,img.rows/2);
Scalar color=Scalar(0,255,255);
circle(img,Point(img.cols/2,img.rows/2),200,color,2,8);
}
void Myellipse(){ 椭圆
Scalar color=Scalar(0,255,0);
ellipse(img,Point(img.cols/2,img.rows/2),Size(img.cols/4,img.rows/8),180,0,360,color,2,8);
}
二、运行结果
三、API介绍
1、cv::line
void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8,int shift=0 );
第一个参数img:要划的线所在的图像;
第二个参数pt1:直线起点
第二个参数pt2:直线终点
第三个参数color:直线的颜色 e.g:Scalor(0,0,255)
第四个参数thickness=1:线条粗细
第五个参数line_type=8,
(说明一点:这个linetype参数并不是指线型是实线、虚线还是点画线,这个参数实际用途是改变线的产生算法。)
2、cv::rectangle
void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,int thickness=1, int line_type=8, int shift=0 ;CvSize min_size=cvSize(0,0);CvSize max=cvSize(0,0));
cvCircle(CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int lineType=8, int shift=0)
img为图像指针,单通道多通道都行,不需要特殊要求
center为画圆的圆心坐标
radius为圆的半径
color为设定圆的颜色,比如用CV_RGB(255, 0,0)设置为红色
thickness为设置圆线条的粗细,值越大则线条越粗,为负数则是填充效果
4、cv::ellipse
void cvEllipse( CvArr* img, CvPoint center, CvSize axes, double angle,double start_angle, double end_angle, CvScalar color,int thickness=1, int line_type=8, int shift=0 );
img 图像。center 椭圆圆心坐标。axes 轴的长度。angle 偏转的角度。start_angle 圆弧起始角的角度。.end_angle 圆弧终结角的角度。color 线条的颜色。thickness 线条的粗细程度。line_type 线条的类型,见CVLINE的描述。shift 圆心坐标点和数轴的精度。