前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV 绘图功能

OpenCV 绘图功能

作者头像
chaibubble
发布2022-05-07 09:21:58
2800
发布2022-05-07 09:21:58
举报
文章被收录于专栏:深度学习与计算机视觉

在利用Opencv处理图像时,我们常常需要利用一些绘图操作用来验证中间结果是否正确,比如画圆,画椭圆,画线,画矩形等功能。下面对常用的绘图函数做个整理,也方便以后自己使用:

在说明绘图功能之前,首先介绍绘图时常常用到了两个结构 Point 和 Scalar。

Point数据结构表示了由其图像坐标 x 和 y 指定的2D点。可定义为:

代码语言:javascript
复制
Point pt;
pt.x = 10;
pt.y = 8;

或者

代码语言:javascript
复制
Point pt =  Point(10, 8);

Scalar表示了具有4个元素的数组。此类型在OpenCV中被大量用于传递像素值。 它利用最多的是用来表示RGB颜色值(三个参数)。如果用不到第四个参数,则无需定义。颜色参数表达式:

代码语言:javascript
复制
Scalar( i, j, k )

值得注意的是,Scalar表示颜色的顺序并不是RGB,而是BGR,分别代表蓝,绿,红。

绘图函数

画直线line函数,函数原型:

代码语言:javascript
复制
CV_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);

第一个参数:目标图像 第二个参数:起点 第三个参数:终点 第四个参数:线的颜色 第五个参数:线的粗细 第六个参数:线的类型

代码语言:javascript
复制
	Mat srcimage = imread("1.jpg");
	Point a = Point (0,0);  
	Point b = Point (srcimage.cols,srcimage.rows);  
	line(srcimage,a,b,Scalar(255,0,0));  
	imshow("原图",srcimage);
	waitKey(0);
这里写图片描述
这里写图片描述

画圆circle函数,函数原型:

代码语言:javascript
复制
CV_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);

第一个参数:目标图像 第二个参数:圆心 第三个参数:半径 第四个参数:线的颜色 第五个参数:线的粗细 第六个参数:线的类型 第七个参数:圆心坐标点和半径值的小数点位数

代码语言:javascript
复制
	Mat srcimage = imread("1.jpg");
	Point center = Point(55,55);  
	int r = 10;  
	circle(srcimage,center,r,Scalar(0,0,255),-1);  
	imshow("原图",srcimage);
	waitKey(0);
这里写图片描述
这里写图片描述

画椭圆ellipse函数,函数原型:

代码语言:javascript
复制
CV_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, 
int shift=0);

第一个参数:目标图像 第二个参数:圆心 第三个参数:长短轴 第四个参数:径向夹角(水平面到长轴的夹角) 第五个参数:起始角度(长轴到起始边沿的夹角) 第六个参数:结束角度(长轴到结束点的夹角) 第七个参数:线的颜色 第八个参数:线的粗细 第九个参数:线的类型 第十个参数:圆心坐标点和半径值的小数点位数

代码语言:javascript
复制
Mat srcimage = imread("1.jpg");
Point center = Point(55,55);  
ellipse(srcimage,center,Size( 50, 10 ),0,0,360,Scalar(0,255,0));  
imshow("原图",srcimage);
waitKey(0);
这里写图片描述
这里写图片描述

画矩形rectangle函数,函数原型:

代码语言:javascript
复制
CV_EXPORTS_W void rectangle(
CV_IN_OUT Mat& img,
Point pt1, 
Point pt2,
const Scalar& color, 
int thickness=1,
int lineType=8, 
int shift=0);

第一个参数:目标图像 第二个参数:左上角点 第三个参数:右下角点 第四个参数:线的颜色 第五个参数:线的粗细 第六个参数:线的类型 第七个参数:圆心坐标点和半径值的小数点位数

代码语言:javascript
复制
	Mat srcimage = imread("1.jpg");
	Point a = Point(5,5);  
	Point b = Point(55,55);  
	rectangle(srcimage,a,b,Scalar(255,0,0));  
	imshow("原图",srcimage);
	waitKey(0);
这里写图片描述
这里写图片描述

插入文字 putText函数 ,函数原型:

代码语言:javascript
复制
CV_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 );

第一个参数:目标图像 第二个参数:插入文字 第三个参数:文字位置 第四个参数:字体 第五个参数:大小 第六个参数:颜色

代码语言:javascript
复制
Mat srcimage = imread("1.jpg");
string words= "chaibubble";  
putText( srcimage, words, Point( srcimage.rows/2,srcimage.cols/4),CV_FONT_HERSHEY_COMPLEX, 1, Scalar(0, 255, 0) );  
imshow("原图",srcimage);
waitKey(0);
这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档