OpenCV基础(五)

图形绘制

OpenCV提供了直线,矩形,圆,椭圆的绘制函数,下面介绍用法

直线绘制:line()

函数原型: 

1void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, 2 int thickness = 1, int lineType = LINE_8, int shift = 0);

参数声明:

  • InputOutputArray img:输出图像
  • Point pt1:线段的第一个点
  • Point pt2:线段的第二个点
  • const Scalar& color:直线颜色
  • int thickness = 1:直线粗细程度
  • int lineType = LINE_8:直线类型
  • int shift = 0:点坐标的小数点位数

代码:

1 1 #include <opencv2/opencv.hpp> 2 2 #include <iostream> 3 3 4 4 using namespace std; 5 5 using namespace cv; 6 6 7 7 int main(int argc, char** argv) { 8 8 9 9 Mat srcImage = imread("D:/shenjianxin.png"); 1010 if (!srcImage.data) { 1111 cout << "could not load image" << endl; 1212 return -1; 1313 } 1414 1515 Point p1 = Point(200, 300); 1616 Point p2 = Point(400, 300); 1717 Scalar color = Scalar(0, 0, 255); 1818 line(srcImage, p1, p2, color, 2, 8, 0); 1919 imshow("直线绘制", srcImage); 2020 2121 waitKey(0); 2222 return 0; 2323 }

效果图:

矩形绘制:rectangle()

函数原型:

1void rectangle(CV_IN_OUT Mat& img, Rect rec, 2 const Scalar& color, int thickness = 1, 3 int lineType = LINE_8, int shift = 0);

函数声明:

  • CV_IN_OUT Mat& img:输出图像
  •  Rect rec: 矩形的位置和长宽
  •  const Scalar& color:矩形颜色
  • int thickness = 1:线宽
  • int lineType = LINE_8:直线类型
  •  shit:点坐标的小数点位数

代码:

1 1 #include <opencv2/opencv.hpp> 2 2 #include <iostream> 3 3 4 4 using namespace std; 5 5 using namespace cv; 6 6 7 7 int main(int argc, char** argv) { 8 8 9 9 Mat srcImage = imread("D:/shenjianxin.png"); 1010 if (!srcImage.data) { 1111 cout << "could not load image" << endl; 1212 return -1; 1313 } 1414 1515 Rect rect = Rect(200, 100, 200, 200); 1616 Scalar color = Scalar(255, 0, 0); 1717 rectangle(srcImage, rect, color, 2, LINE_8); 1818 imshow("矩形绘制", srcImage); 1919 2020 waitKey(0); 2121 return 0; 2222 }

效果图:

圆形绘制:circle()

函数原型:

1void circle(InputOutputArray img, Point center, int radius, 2 const Scalar& color, int thickness = 1, 3 int lineType = LINE_8, int shift = 0);

函数声明:

  • img  图像
  • center 圆心
  • radius 半径
  • color 颜色
  • thickness 线宽
  • linetype 线型
  • shift 坐标点的小数点位数

代码:

1 1 #include <opencv2/opencv.hpp> 2 2 #include <iostream> 3 3 4 4 using namespace std; 5 5 using namespace cv; 6 6 7 7 int main(int argc, char** argv) { 8 8 9 9 Mat srcImage = imread("D:/shenjianxin.png"); 1010 if (!srcImage.data) { 1111 cout << "could not load image" << endl; 1212 return -1; 1313 } 1414 1515 Scalar color = Scalar(0, 0, 255); 1616 Point center = Point(srcImage.cols / 2, srcImage.rows / 2); 1717 circle(srcImage, center, 99, color, 2, 8); 1818 imshow("圆形绘制", srcImage); 1919 2020 waitKey(0); 2121 return 0; 2222 }

效果图:

椭圆绘制:ellipse()

函数原型:

1void ellipse(InputOutputArray img, Point center, Size axes, 2 double angle, double startAngle, double endAngle, 3 const Scalar& color, int thickness = 1, 4 int lineType = LINE_8, int shift = 0);

函数声明:

  • img 图像
  • center 椭圆原心
  • axes  椭圆x轴长度的一半,y轴长度的一半
  • angle 椭圆旋转角度
  • startAngle 起始角度
  • endAngle 终止角度
  • color 椭圆颜色
  • thickness 线宽
  • linetype 线型
  • shift 坐标小数点位数

代码:

1 1 #include <opencv2/opencv.hpp> 2 2 #include <iostream> 3 3 4 4 using namespace std; 5 5 using namespace cv; 6 6 7 7 int main(int argc, char** argv) { 8 8 9 9 Mat srcImage = imread("D:/shenjianxin.png"); 1010 if (!srcImage.data) { 1111 cout << "could not load image" << endl; 1212 return -1; 1313 } 1414 1515 Scalar color = Scalar(0, 255, 0); 1616 ellipse(srcImage, Point(srcImage.cols / 2, srcImage.rows / 2), Size(srcImage.cols / 4, srcImage.rows / 4), 0, 0, 360, color, 2, LINE_8); 1717 imshow("椭圆绘制", srcImage); 1818 1919 waitKey(0); 2020 return 0; 2121 }

效果图:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

OpenCV基础(五) - HelloWorld