当前位置: 首页 > 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;
}

输出结果:

http://www.xdnf.cn/news/1004041.html

相关文章:

  • 回归-嵌入式与c概念
  • docker 单机部署redis集群(一)
  • 股指期货入门基础知识
  • 【笔记】Blockchain
  • 微机原理与接口技术,期末习题(一)
  • 突破微小目标检测瓶颈:智能无人机在蓝莓产量估算中的解决方案
  • Smart Form Adobe form
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署的 Dify LLM 应用平台三种方案横评:单机、知识库增强、高可用容器化比较
  • DAY 52 神经网络调参指南
  • yolov5环境配置
  • linux共享内存解析
  • 完整 Bootloader 框架
  • 智能制造:解读41页中小工厂数字化新路径【附全文阅读】
  • CoSchedule Headline Analyzer:分析标题情感强度与可读性
  • 在 Flask 或 Tornado 中返回渲染后的页面内容
  • 爱普生SG5032EEN差分晶体振荡器的特点
  • Element UI 表格el-table宽度不能自适应的问题解决方法
  • 深度学习编译器
  • Docker搭建2FAuth服务
  • 数据结构 (树) 学习 2025年6月12日12:59:39
  • Vue 生命周期
  • 铸铁平台的制造工艺复杂而精细
  • 音视频之H.264/AVC编码器原理
  • 头歌之动手学人工智能-Pytorch 之torch.nn进阶
  • 算法导论第二章:递归与分治的数学艺术
  • 【MV】为什么需要DeepSeek 的分析: AI 替代编舞师
  • Docker 常用命令大全
  • 基于LangChain构建一个RAG多轮对话问答应用
  • LeetCode 868.二进制间距
  • 第三十八课:实战案例-飞鸟和飞机的识别