首页 > 学院 > 开发设计 > 正文

Opencv 绘图功能

2019-11-08 01:18:25
字体:
来源:转载
供稿:网友

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

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

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

Point pt;pt.x = 10;pt.y = 8;

或者

Point pt = Point(10, 8);

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

Scalar( i, j, k )

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

绘图函数

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

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

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

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函数,函数原型:

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

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

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函数,函数原型:

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

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

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函数,函数原型:

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

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

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函数 ,函数原型:

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

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

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

这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表