当前位置: 首页 > news >正文

OpenCV 图像几何形状绘制

一、知识点
1、在屏幕、图像上,一般坐标系原点(0,0)在左上角,向右x轴正方向,向下y轴正方向。
  |--------------> +x
  |
  |
  |
  |
  V
  +y
  
2、void rectangle(InputOutputArray img, Rect rec, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  (1)、在图像上绘制或填充一个矩形。
  (2)、参数说明:
      img: 输入、输出参数,表示要绘制或填充矩形的图像。
      rec: 定义了矩形左上角位置、宽、高。
      color: 矩形线框或填充的颜色。
      thickness: >0时表示矩形线框粗细,<0时表示填充矩形。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      shift: 点坐标中的小数位数。
      
3、void circle(InputOutputArray img, Point center, int radius, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  (1)、在图像上绘制或填充一个圆形。
  (2)、参数说明:
      img: 输入、输出参数,表示要绘制或填充圆形的图像。
      center: 圆心位置。
      radius: 圆形半径。
      color: 圆形线框或填充的颜色。
      thickness: >0时表示圆形线框粗细,<0时表示填充圆形。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      shift: 点坐标中的小数位数。
      
4、void line(InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  (1)、在图像上绘制一个线段。
  (2)、参数说明:
      img: 输入、输出参数,表示要绘制线段的图像。
      pt1: 线段的第一个点位置。
      pt2: 线段的第二个点位置。
      color: 线段的颜色。
      thickness: 线段的粗细。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      shift: 点坐标中的小数位数。
      
5、void ellipse(InputOutputArray img, const RotatedRect & box, const Scalar & color, int thickness = 1, int lineType = LINE_8);
  (1)、在图像上绘制或填充一个椭圆。
  (2)、参数说明:
      img: 输入、输出参数,表示要绘制或填充椭圆的图像。
      box: 一个RotatedRect对象,它包含椭圆的中心位置、大小(长轴和短轴的长度)、旋转角度(椭圆主轴与水平方向的夹角,单位是度,顺时针为正),即函数要绘制旋转矩形内接的椭圆。
      color: 椭圆线框或填充的颜色。
      thickness: >0时表示椭圆线框粗细,<0时表示填充椭圆。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      
6、void ellipse(InputOutputArray img, 
               Point center, 
               Size axes, 
               double angle, 
               double startAngle, 
               double endAngle, 
               const Scalar & color, 
               int thickness = 1,
               int lineType = LINE_8, 
               int shift = 0);

  (1)、在图像上绘制或填充一个圆弧。
  (2)、参数说明:
      img: 输入、输出参数,表示要绘制或填充圆弧的图像。
      center: 圆弧所在的椭圆的中心位置。
      axes: 圆弧所在的椭圆的长半轴、短半轴的长度。
      angle: 圆弧所在的椭圆的旋转角度(椭圆主轴与水平方向的夹角,单位是度,顺时针为正)。
      startAngle: 圆弧起始角度(与主轴的夹角,单位是度,顺时针为正)。
      endAngle: 圆弧终止角度(与主轴的夹角,单位是度,顺时针为正)。
      color: 圆弧线框或填充的颜色。
      thickness: >0时表示圆弧线框粗细,<0时表示填充圆弧扇区。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      shift: 点坐标中的小数位数。
               
    
    
二、示例代码

#include <iostream>
#include <opencv2/opencv.hpp>int main()
{cv::Mat src = cv::imread("../images/9.png");if (src.empty()){std::cout << "load src image error..." << std::endl;return -1;}cv::imshow("原图演示", src);//在图像上绘制一个红色矩形cv::rectangle(src, cv::Rect(240, 10, 270, 220), cv::Scalar(0, 0, 255), 2, 8, 0);//在图像上填充一个红色矩形cv::rectangle(src, cv::Rect(520, 10, 50, 220), cv::Scalar(0, 0, 255), -1, 8, 0);//在图像上绘制一个蓝色圆形cv::circle(src, cv::Point(570, 230), 10, cv::Scalar(255, 0, 0), 2, 8, 0);//在图像上填充一个蓝色圆形cv::circle(src, cv::Point(570, 10), 10, cv::Scalar(255, 0, 0), -1, 8, 0);//在图像上绘制一条线段cv::line(src, cv::Point(520, 10), cv::Point(570, 230), cv::Scalar(0, 255, 0), 2, 8, 0);//在图像上绘制一条反锯齿线段cv::line(src, cv::Point(570, 10), cv::Point(520, 230), cv::Scalar(0, 255, 0), 2, cv::LINE_AA, 0);//绘制椭圆cv::RotatedRect rrt;rrt.center = cv::Point(200, 200);rrt.size = cv::Size(200, 100);rrt.angle = 30.0;cv::ellipse(src, rrt, cv::Scalar(0, 255, 255), 2, 8);//绘制圆弧cv::ellipse(src, cv::Point(200, 200), cv::Size(100, 50), 30, 30, 150, cv::Scalar(255, 0, 255), 2, 8, 0);//填充圆弧cv::ellipse(src, cv::Point(200, 200), cv::Size(100, 50), 30, -30, -150, cv::Scalar(255, 0, 255), -1, 8, 0);cv::imshow("绘制演示", src);cv::waitKey(0);return 0;
}

输出结果:

相关文章:

  • LMD分解通过局部均值分解重构信号实现对信号的降噪
  • MySQL数据库:关系型数据库的基石
  • 知识变现新范式:创客匠人如何重构中医行业商业逻辑
  • GESP 七级 实操题
  • 以太联16端口千兆PoE+网络管理交换机
  • C语言——指针
  • Windows 前端开发环境一键启动 (NVM + Yarn)
  • 13.15 LLaMA 3+LangChain重构语法学习:可视化语法树+智能纠错让效率翻倍!
  • AI换衣技术实现原理浅析:基于图像合成的虚拟试衣实践
  • 音视频之H.264/AVC编码器原理
  • react,使用echarts过程
  • ShardingSphere解析:分布式数据库中间件的分片设计与事务管理实践
  • 【React】常用的状态管理库比对
  • 脑电震动音频震动信号模拟器设计资料:758-2路32bit DA 脑电震动音频信号模拟器
  • 2025pmx文件怎么打开blender
  • linux驱动开发(7)-互斥与同步
  • 力扣HOT100之终章:一些随笔
  • 【力扣 简单 C】21. 合并两个有序链表
  • Rabbitmq后台无法登录问题解决
  • android:foregroundServiceType详解
  • 网站优化怎么做分录/广州关键词搜索排名
  • html基本知识/站群seo技巧
  • 如何让搜索引擎不收录网站/网站超级外链
  • 做网站必须需要服务器嘛/百度推广平台收费标准
  • 做胎儿羊水鉴定网站/关键词排名提升工具
  • 深圳定制网站开发/如何进行seo搜索引擎优化