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

OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字

目录

1.绘制直线line()

2.绘制圆形circle()

3.绘制椭圆形ellipse() 

4.绘制矩形rectangle()

5.绘制多边形 fillPoly() 

6.绘制文字putText()

7.例子


1.绘制直线line()

CV_EXPORTS_W void line(InputOutputArray img,Point pt1, Point pt2,const Scalar& color,int thickness = 1, int lineType = LINE_8, int shift = 0
);
  • img:绘制圆形的图像
  • ptl:直线起始点在图像中的坐标
  • pt2: 直线终点在图像中的坐标
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

2.绘制圆形circle()

CV_EXPORTS_W void circle(InputOutputArray img, Point center, int radius,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);
  • img:绘制圆形的图像
  • center:圆形的中心位置。
  • radius:圆形的半径长度,单位为像素。
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

3.绘制椭圆形ellipse() 

CV_EXPORTS_W 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);
  • img:绘制圆形的图像
  • center:圆的中心坐标
  • axes:椭圆主轴大小的一半。
  • angle:椭圆旋转的角度,单位为度
  • startAngle:椭圆弧起始的角度,单位为度
  • endAngle:椭圆弧终止的角度,单位为度
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

4.绘制矩形rectangle()

CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);
  • img:绘制圆形的图像
  • pt1:左上角顶点
  • pt2:右下角顶点。
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数

5.绘制多边形 fillPoly() 

CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,const Scalar& color, int lineType = LINE_8, int shift = 0,Point offset = Point() );
  • img:绘制圆形的图像
  • pts: 多边形顶点数组,可以存放多个多边形的顶点坐标的数组
  • color:圆形的颜色,用三通道表示
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • shift:中心坐标和半径数值中的小数位数
  • offset:所有顶点的可选偏移。

6.绘制文字putText()

CV_EXPORTS_W void putText( InputOutputArray img, const String& text, Point org,int fontFace, double fontScale, Scalar color,int thickness = 1, int lineType = LINE_8,bool bottomLeftOrigin = false );
  • img:绘制圆形的图像
  • text:输出到图像中的文字,目前OpenCV 4只支持英文。
  • org:图像中文字字符串的左下角像素坐标。
  • fontFace:字体类型的选择标志
  • fontScale:字体的大小。
  • color:圆形的颜色,用三通道表示
  • thickness:轮廓的宽度
  • lineType:边界的类型,可取值为FILLED,LINE 4,LINE 8 和LINE AA
  • bottomLeftOrigin: 图像数据原点的位置,默认为左上角,如果参数改为true,则原点为左下角。

其中,fontFace参数指定了要使用的字体类型。下面是一些常用的字体类型选择标志:

  • FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。
  • FONT_HERSHEY_PLAIN - 正常大小无衬线字体。
  • FONT_HERSHEY_DUPLEX - 正常大小无衬线字体(更加密集)。
  • FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。
  • FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体(更加密集)。
  • FONT_HERSHEY_COMPLEX_SMALL - 小型字体。
  • FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体。
  • FONT_HERSHEY_SCRIPT_COMPLEX - 手写风格字体,复杂版本。
  • FONT_ITALIC - 斜体字体。

7.例子

   //    生成一个黑色图像用于绘制几何图形Mat img=Mat::zeros(Size(512,512),CV_8UC3);//绘制圆形circle(img,Point(50,50),25,Scalar(255,255,255),-1);//绘制一个实心圆circle(img,Point(100,50),20,Scalar(255,255,255),4);//绘制一个空心圆//绘制直线line(img,Point(100,100),Point(200,100),Scalar(255,255,255),2,LINE_4,0);//绘制一条直线//绘制椭圆ellipse(img,Point(300,255),Size(100,70),0,0,100,Scalar(255,255,255),-1);//绘制矩形rectangle(img,Point(50,400),Point(100,450),Scalar(125,125,125),-1);//绘制多边形Point pp[2][6];pp[0][0]=Point(72,200);pp[0][1]=Point(142,204);pp[0][2]=Point (226,263);pp[0][3]=Point (172,310);pp[0][4]=Point (117,319);pp[0][5]=Point (15,260);pp[1][0]=Point(359,339);pp[1][1]=Point(447,351);pp[1][2]=Point (504,349);pp[1][3]=Point (484,433);pp[1][4]=Point (418,449);pp[1][5]=Point (354,402);Point  pp2[5];pp2[0]=Point (350,83);pp2[1]=Point(463,90);pp2[2]=Point (500,171);pp2[3]=Point (421,194);pp2[4]=Point (338,141);const Point *pts[3]={pp[0],pp[1],pp2};//pts变量的生成int npts[]={6,6,5};fillPoly(img,pts,npts,3,Scalar(125,125,125),8);//绘制3个多边形putText(img,"Learn OpenCV 4",Point(100,400),2,1,Scalar(255,255,255));imwrite("/sdcard/DCIM/img.jpg",img);

http://www.lryc.cn/news/153407.html

相关文章:

  • [华为云云服务器评测] Unbutnu添加SSH Key、编译启动Springboot项目
  • 【MySQL学习笔记】(七)内置函数
  • 《Python魔法大冒险》004第一个魔法程序
  • 架构,平台,框架的区别和联系
  • Mac 安装php多版本,brew安装php8.0
  • 【100天精通Python】Day53:Python 数据分析_NumPy数据操作和分析进阶
  • druid连接不上doris有哪些可能原因
  • 双边滤波 Bilateral Filtering
  • PXE批量装机
  • Linux--VMware的安装和Centos
  • dji uav建图导航系列()ROS中创建dji_sdk节点包(一)项目结构
  • 基于x86_64 ubuntu22.04的framebuffer编程
  • 解密回文--栈
  • Mysql主从服务安装配置
  • 双向BFS
  • 数据艺术:精通数据可视化的关键步骤
  • MySQL 是如何实现事务的四大特性的?
  • python实现zscore归一化和minmax标准化
  • 架构师成长之路Redis第三篇|Redis key过期清除策略
  • C++智能指针之weak_ptr(保姆级教学)
  • ElementUI浅尝辄止18:Avatar 头像
  • 1688API技术解析,实现按图搜索1688商品(拍立淘)
  • 【面试经典150题】买卖股票的最佳时机
  • selenium可以编写自动化测试脚本吗?
  • CXL.mem M2S Message 释义
  • 使用boost::geometry::union_ 合并边界(内、外):方案二
  • ICCV 2023 | 小鹏汽车纽约石溪:局部上下文感知主动域自适应LADA
  • stable diffusion实践操作-黑白稿线稿上色
  • Python学习教程:集合操作的详细教程
  • 球球的排列