作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

circle函数原型

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

circle参数说明

  1. InputOutputArray类型的img,输入图像也是输出图像,如Mat类型。
  2. Point类型的center,圆心位置。
  3. int类型的radius,圆形半径。
  4. Scalar类型的color,文字颜色。
  5. int类型的thickness,文字线条宽度。
  6. int类型的line_type,绘制线的类型,-1就是FILLED(填满),4是LINE_4(4连通域),8是LINE_8(8连通域),LINE_AA(抗锯齿线)。
  7. int类型的shift,中心坐标和半径值中的小数位数。

rectangle函数原型

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

rectangle参数说明

  1. InputOutputArray类型的img,输入图像也是输出图像,如Mat类型。
  2. Rect类型的rec,矩形位置。
  3. Scalar类型的color,文字颜色。
  4. int类型的thickness,文字线条宽度。
  5. int类型的line_type,绘制线的类型,-1就是FILLED(填满),4是LINE_4(4连通域),8是LINE_8(8连通域),LINE_AA(抗锯齿线)。
  6. int类型的shift,中心坐标和半径值中的小数位数。

ellipse函数原型

void ellipse(InputOutputArray img, const RotatedRect& box, const Scalar& color,int thickness = 1, int lineType = LINE_8);

ellipse参数说明

  1. InputOutputArray类型的img,输入图像也是输出图像,如Mat类型。
  2. RotatedRect类型的box,椭圆位置,里面有三个参数,中心,长轴短轴尺寸,角度。
  3. Scalar类型的color,文字颜色。
  4. int类型的thickness,文字线条宽度。
  5. int类型的line_type,绘制线的类型,-1就是FILLED(填满),4是LINE_4(4连通域),8是LINE_8(8连通域),LINE_AA(抗锯齿线)。

测试代码

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;void DrawCircle(cv::Mat mask,const cv::Point2i &center, int radius,const cv::Scalar &color, int thickness);
void DrawRect(cv::Mat mask, const cv::Rect &rect, const cv::Scalar &color, int thickness);
void DrawEllipse(cv::Mat mask, const cv::RotatedRect &ellipse, const cv::Scalar &color, int thickness);int main()
{cv::Mat src = imread("test.jpg");cv::Mat result = src.clone();DrawCircle(result, cv::Point(src.cols / 2, src.rows / 2), 150, Scalar(0, 0, 255), 16);DrawRect(result, cv::Rect(100, 50, 1200, 1000), Scalar(0, 255, 255), 16);DrawEllipse(result, cv::RotatedRect(cv::Point(src.cols / 2, src.rows / 2),cv::Size(300,200),135), Scalar(255, 255, 255), 16);imshow("original", src);imshow("result", result);waitKey(0);return 0;
}
// 绘制圆形
void DrawCircle(cv::Mat mask,const cv::Point2i &center, int radius,const cv::Scalar &color, int thickness)
{cv::circle(mask, center, radius, color, thickness);
}
// 绘制矩形
void DrawRect(cv::Mat mask,const cv::Rect &rect, const cv::Scalar &color, int thickness)
{cv::rectangle(mask, rect, color, thickness);
}
// 画椭圆
void DrawEllipse(cv::Mat mask,const cv::RotatedRect &ellipse,const cv::Scalar &color, int thickness)
{cv::ellipse(mask, ellipse, color, thickness);
}

测试效果

图1 原图

图2 图形绘制

图形绘制是图像处理中常用的功能之一,圆形和矩形没什么好说的。如图2所示,椭圆创建有三个参数,中心同圆一样,尺寸是全长轴和全短轴,注意不是半长,旋转的坐标系同Mat坐标系一样,往下往右为正,所以旋转135°就是图中的样子。

写这篇文章是为了后面绘制复杂图形做铺垫,如圆端矩形、圆角矩形、多边形、同心圆等等。

如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

OpenCV-基本图形绘制(圆、矩形、椭圆)相关推荐

  1. CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  2. python画椭圆-python绘制圆和椭圆

    源自:https://blog.csdn.net/petermsh/article/details/78458585 1. 调用包函数绘制圆形Circle和椭圆Ellipse from matplot ...

  3. python opencv 双击鼠标绘制圆

    10-python opencv 双击鼠标绘制圆 10-python opencv 双击鼠标绘制圆 概述 实现过程 引用与创建空图 设置回调函数 回调上述函数 显示图像 源代码 运行结果 参考 概述 ...

  4. 了解什么是SVG并使用SVG绘制圆,椭圆,矩形

    一.了解SVG概念 SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图 HTML5支持内联SVG HTML<svg>元素是图形的容器 SVG有多种绘制路 ...

  5. OpenCV截取图像的任意形状区域,规则的图形(圆、椭圆、矩形),不规则鼠标自己选择

    主要代码: typedef enum _tagType{ IMAGE_RECT=0, IMAGE_CIRCLE, IMAGE_ELLIPSE, IMAGE_ANY_REGION }REGIONTYPE ...

  6. MATLAB绘制圆、椭圆、矩形等基本平面图形

    MATLAB绘制基本平面图形 **画线的方法** ***rectangle函数** **画矩形的方法** **旋转矩形的方法** **画圆的方法** **画圆弧的方法** **画椭圆的方法** **画 ...

  7. java 椭圆拟合,OpenCV画轮廓的外界圆矩形椭圆等

    #include #include #include #include using namespace std; #pragma   comment(lib,"cv.lib") # ...

  8. OpenCV基本图形绘制之椭圆

    先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...

  9. OpenCV基本图形绘制之圆

    先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...

  10. OPENCV 寻找图形最大内接矩形

      轮廓的最大外接矩形,Opencv有提供的现成的算法,最大内接圆也有提供的算法.但是没有现成的内接矩形的算法.本文使用C++实现了取轮廓最大内接矩形的方式,供大家参考. 实现的基本思路是: 处理图片 ...

最新文章

  1. 网络与服务器编程框架库 acl_3.0.13 发布
  2. mysql字段名与关键字冲突(near to:syntax error)
  3. PHP编译安装时常见错误解决办法,php编译常见错误
  4. 面试题总结14 动态规划
  5. 【杂谈】如何在专家指导下系统性学习自然语言处理
  6. 数据库系统概念总结:第四章 中级SQL
  7. monk js_对象检测-使用Monk AI进行文档布局分析
  8. java 不取空值_Java:如何更优雅的处理空值?
  9. svn更换url地址怎么办
  10. 找高清壁纸,没有那么麻烦,高图网帮你搞定!
  11. 2021年前端还好找工作吗?
  12. 重温JS基础--创建对象
  13. 机器学习实践笔记(二)EOF
  14. 游戏筑基开发之变量、运算符、转义字符的注意点(C语言)
  15. SSE优化系列十:RGB和YUV格式图像互转SSE优化
  16. 计算机表格函数公式在表格中人数,计算机办公自动化常用公式和函数在电子表格中的应用...
  17. Py交易的基本遵循原则.
  18. php 正文提取算法,基于机器学习的网页正文提取方法
  19. textpad和masm搭建汇编环境
  20. STM32使用串口1配合DMA接收不定长数据,大大减轻CPU载荷

热门文章

  1. 1.3—Spring基础配置—3.AOP
  2. httpd 中常见的状态码
  3. java搜索引擎lucene_简单lucene搜索实现(搜索引擎)
  4. appium文件夹下无.bin文件_手把手教你Win10应用商店文件夹无权限访问怎么处理
  5. 【论文写作】JSP旅游网如何写总体设计
  6. 【论文写作】精品课程教学网站中系统内核设计如何写
  7. php 下载的文件损坏,php 文件下载 出现下载文件内容乱码损坏的解决方法
  8. 针织面料常见疵点及原因分析大全
  9. GCC编译器简明教程(Linux下C语言开发环境的搭建)
  10. Visual C++学习总结——进程或线程与指定CPU绑定