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

本文介绍了使用OpenCV库在图像上绘制线条、矩形、圆和椭圆的方法,包括API的详细参数解释,并展示了如何添加文字到图像中。通过示例代码,读者可以了解OpenCV的基本图形绘制操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、代码

#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                圆心坐标点和数轴的精度。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值