您的位置:首页 > 运维架构

opencv学习笔记-5,绘制线条、矩形、圆、椭圆,添加文字

2017-07-20 16:07 218 查看
一、代码

#include<opencv2/opencv.hpp>

#include<highgui.h>

#include<iostream>

using  namespace  cv;

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));

img -- 图像.

pt1 -- 矩形的一个顶点。

pt2 -- 矩形对角线上的另一个顶点

color -- 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。

thickness -- 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。

line_type -- 线条的类型。见cvLine的描述

shift -- 坐标点的小数点位数。

CvSize cvSize(int height,int width)

3、cv::circle

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               圆心坐标点和数轴的精度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐