OpenCvSharp从入门到实践-(07)绘制图形

news2024/11/20 18:40:13

目录

1、线段的绘制

1.1实例1-绘制线段拼成一个"王"字

2、矩形的绘制

2.1实例2-绘制一个矩形边框

2.2实例3-绘制一个实心矩形

3、圆的绘制

3.1实例4-绘制"交通灯"

4、多边形绘制

4.1实例5-绘制等腰梯形

5、文字的绘制

5.1实例6-绘制文字OpenCvSharp


1、线段的绘制

OpenCvSharp提供Cv2.Line方法,使用该方法可以绘制各种线段,Cv2.Line方法如下:

public static void Line(InputOutputArray img, Point pt1, Point pt2, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)

说明:

摘要:
    Draws a line segment connecting two points

参数:
  img:
    The image.

  pt1:
    First point of the line segment.

  pt2:
    Second point of the line segment.

  color:
    Line color.

  thickness:
    Line thickness. [By default this is 1]

  lineType:
    Type of the line. [By default this is LineType.Link8]

  shift:
     Number of fractional bits in the point coordinates. [By default this is 0]

1.1实例1-绘制线段拼成一个"王"字

代码如下:

Mat canvas = Mat.Zeros(300, 300, MatType.CV_8UC3);

Cv2.Line(canvas, new Point(50, 50), new Point(250, 50), new Scalar(255, 0, 0), 5);
Cv2.Line(canvas, new Point(50, 150), new Point(250, 150), new Scalar(0, 255, 0), 10);
Cv2.Line(canvas, new Point(50, 250), new Point(250, 250), new Scalar(0, 0, 255), 15);
Cv2.Line(canvas, new Point(150, 50), new Point(150, 250), new Scalar(0, 255, 255), 20);

Cv2.ImShow("lines", canvas);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

每条线段的起点坐标和终点坐标

2、矩形的绘制

OpenCvSharp提供Cv2.Rectangle方法,该方法既可以绘制矩形边框,也可以绘制实心矩形,其函数如下:

public static void Rectangle(InputOutputArray img, Point pt1, Point pt2, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)

说明:
摘要:
    Draws simple, thick or filled rectangle

参数:
  img:
    Image.

  pt1:
    One of the rectangle vertices.

  pt2:
    Opposite rectangle vertex.

  color:
    Line color (RGB) or brightness (grayscale image).

  thickness:
    Thickness of lines that make up the rectangle. Negative values make the function
    to draw a filled rectangle. [By default this is 1]

  lineType:
    Type of the line, see cvLine description. [By default this is LineType.Link8]

  shift:
    Number of fractional bits in the point coordinates. [By default this is 0]

2.1实例2-绘制一个矩形边框

代码如下:

Mat canvas = Mat.Zeros(300, 300, MatType.CV_8UC3);

Cv2.Rectangle(canvas, new Point(50, 50), new Point(200, 150), new Scalar(255, 0, 0), 20);

Cv2.ImShow("Rectangle", canvas);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

2.2实例3-绘制一个实心矩形

代码如下:

Mat canvas = Mat.Zeros(300, 300, MatType.CV_8UC3);

Cv2.Rectangle(canvas, new Point(50, 50), new Point(200, 150), new Scalar(255, 0, 0), -1);

Cv2.ImShow("Rectangle", canvas);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

3、圆的绘制

 OpenCvSharp提供Cv2.Circle方法,该方法既可以绘制圆形边框,也可以绘制实心圆形,Cv2.Circle函数如下:

public static void Circle(InputOutputArray img, int centerX, int centerY, int radius, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)

说明:

摘要:
     Draws a circle

 参数:
   img:
     Image where the circle is drawn.

   centerX:
     X-coordinate of the center of the circle.

   centerY:
     Y-coordinate of the center of the circle.

   radius:
     Radius of the circle.

   color:
     Circle color.

   thickness:
     Thickness of the circle outline if positive, otherwise indicates that a filled
     circle has to be drawn. [By default this is 1]

   lineType:
     Type of the circle boundary. [By default this is LineType.Link8]

   shift:
     Number of fractional bits in the center coordinates and radius value. [By default
     this is 0]

3.1实例4-绘制"交通灯"

代码如下:

Mat canvas = Mat.Zeros(300, 300, MatType.CV_8UC3);

Cv2.Circle(canvas, new Point(50, 150), 40, new Scalar(0, 0, 255), -1);

Cv2.Circle(canvas, new Point(150, 150), 40, new Scalar(0, 255, 255), -1);

Cv2.Circle(canvas, new Point(250, 150), 40, new Scalar(0, 255, 0), -1);

Cv2.ImShow("TrafficLights", canvas);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

4、多边形绘制

OpenCvSharp提供Polylines方法绘制多边形,其函数如下:

public static void Polylines(Mat img, IEnumerable<IEnumerable<Point>> pts, bool isClosed, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)

说明:

摘要:
    draws one or more polygonal curves

参数:
  img:
    画布
  pts:
    多边形各顶点组成的列表
  isClosed:
    是否闭合
  color:
    颜色
  thickness:
    线条宽度
  lineType:

  shift:

4.1实例5-绘制等腰梯形

代码如下:

Mat canvas = Mat.Zeros(300, 300, MatType.CV_8UC3);

List<OpenCvSharp.Point> pts1 = new List<OpenCvSharp.Point>
{
    new OpenCvSharp.Point(100,50),
    new OpenCvSharp.Point(200,50),
    new OpenCvSharp.Point(50,250),
    new OpenCvSharp.Point(250,250)
};

List<List<OpenCvSharp.Point>> pts = new List<List<Point>>();
pts.Add(pts1);

Cv2.Polylines(canvas, pts, true, new Scalar(0, 0, 255), 1);

Cv2.ImShow("Polylines", canvas);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

5、文字的绘制

OpenCvSharp提供Cv2.PutText方法进行文字绘制,其函数如下:

public static void PutText(InputOutputArray img, string text, Point org, HersheyFonts fontFace, double fontScale, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, bool bottomLeftOrigin = false)

说明:

摘要:
    renders text string in the image

参数:
  img:
    Image.

  text:
    Text string to be drawn.

  org:
    Bottom-left corner of the text string in the image.

  fontFace:
    Font type, see #HersheyFonts.

  fontScale:
    Font scale factor that is multiplied by the font-specific base size.

  color:
    Text color.

  thickness:
    Thickness of the lines used to draw a text.

  lineType:
    Line type. See #LineTypes

  bottomLeftOrigin:
    When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner.

5.1实例6-绘制文字OpenCvSharp

代码如下:

Mat canvas = Mat.Zeros(300, 300, MatType.CV_8UC3);

Cv2.PutText(canvas, "OpenCvSharp", new Point(0, 50), HersheyFonts.Italic, 1, new Scalar(0,255,0), 1, LineTypes.AntiAlias, false);

Cv2.ImShow("Text", canvas);
Cv2.WaitKey();
Cv2.DestroyAllWindows();

效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1294130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直流负载箱的技术发展趋势和创新有哪些?

直流负载箱广泛应用于电子、通信、航空航天等领域&#xff0c;随着科技的不断发展&#xff0c;直流负载箱也在不断创新和改进&#xff0c;直流负载箱在负载电流和电压的测量方面要求高精度和高稳定性。未来的发展趋势是提高负载箱的测量精度和稳定性&#xff0c;以满足更高要求…

2023年12月7日:QT实现登陆界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置this->resize(600,500);//重新设置窗口大小this->setWindowTitle("QQ-盗版");//设置窗口名为QQ-盗版this->setWindowIcon(QIcon("D:\\Qt\\funny\\pi…

gma 空间绘图实战(1):绘制多个子图,连接并展示局部放大区域

安装 gma&#xff1a;pip install gma 本文基于&#xff1a;gma 2.0.3&#xff0c;Python 3.10 本文用到的矢量数据为&#xff1a;CTAmap 1.12。来源于 https://www.shengshixian.com/ 。&#xff08;感谢锐多宝&#xff09; 绘图目标 参考代码 import matplotlib.pyplot as p…

网站建设app开发小程序制作|企业软件定制

网站建设app开发小程序制作|企业软件定制 网站建设和软件开发是现代社会非常重要的领域&#xff0c;它们对于企业、机构和个人来说都具有非常大的意义。随着移动互联网的快速发展&#xff0c;小程序制作也逐渐成为一种非常受欢迎的方式。 在过去&#xff0c;建立一个网站需要具…

避雷针防雷接地工程应用方案

避雷针是一种用于防止建筑物或其他设施被雷击的装置&#xff0c;它的原理是利用避雷针的尖端产生的电晕放电来释放空气中的电荷&#xff0c;从而降低雷电的危险性。 地凯科技避雷针的类型主要有以下几种&#xff1a; 普通避雷针&#xff1a;这是最常见的避雷针&#xff0c;它由…

Unitree B2:打破波士顿动力Spot垄断地位的机器狗

原创 | 文 BFT机器人 在技术高速发展的时代&#xff0c;机器狗的出现标志着科技领域在机器人技术方面的显著进步&#xff0c;这些曾经只存在于幻想中的机器狗现在已经成为各领域的新星&#xff0c;为安防巡逻、应急救援、工业检测、教育科研等各行各业带来了新的可能性和机遇…

12.07

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置//去掉表头this->setWindowFlags(Qt::FramelessWindowHint);//重新设置大小this->resize(800,420);//设置背景颜色this->setStyleSheet("background-color:whi…

java集合之HashMap详解

HashMap详解 介绍 HashMap是在项目中使用的最多的Map&#xff0c;实现了Map接口&#xff0c;继承AbstractMap。基于哈希表的Map接口实现&#xff0c;不包含重复的键&#xff0c;一个键对应一个值&#xff0c;在HashMap存储的时候会将key、value作为一个整体Entry进行存储。 Has…

yum源不起作用_yum无法安装程序_Linux默认源替换---Linux工作笔记067

今天在一台机器上进行安装yum install的时候提示,yum不可用,这时候,折腾了一会 后来更换了默认源就可以了. 首先: 可以看到原来的里面有个 yum.repos.d 里面放了很多源,但是这些源是不可以联网的. 是内网的源,所以,我对他进行了 mv yum.repos.d yum.repos.d.bak 重命名 然…

vm虚拟机固定IP

最近使用vm虚拟机 &#xff0c;可用了一段时间ip就自动变化&#xff0c;于是去网上看了不少教程,但很多都没用。 1.编辑配置 vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改BOOTPROTO为static加入属性IPADDR,设置你想要设置的ip配置GATEWAY与DNS1 不配置GATEWAY与DNS1…

OpenCV-Python:DevCloud CodeLab介绍及学习

1.Opencv-Python演示环境 windows10 X64 企业版系统python 3.6.5 X64OpenCV-Python 3.4.2.16本地PyCharm IDE线上注册intel账号&#xff0c;使用DevCloud CodeLab 平台 2.DevCloud CodeLab是什么&#xff1f; DevCloud是一个基于云端的开发平台&#xff0c;提供了强大的计算…

TCP单聊和UDP群聊

TCP协议单聊 服务端&#xff1a; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.V…

网站建设软件开发小程序制作|企业app定制

网站建设软件开发小程序制作|企业app定制 随着互联网的快速发展&#xff0c;网站建设、软件开发以及小程序制作成为了当前市场上的热门行业。这些行业不仅为企业提供了更多便利和高效的方式来推广自身的产品和服务&#xff0c;同时也为个人提供了更多创业和就业的机会。 在网站…

Python上网神器,自动修改Hosts工具

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python上网神器&#xff0c;自动修改Hosts工具&#xff0c;全文6400字&#xff0c;阅读大约18分钟。 在互联网时代&#xff0c;Hosts 文件的修改是一项常见的任务&#xf…

JFlash烧写单片机bin/hex文件

1&#xff0c;安装压 JLink_Windows_V660c&#xff0c;官网可下载&#xff1b; 2&#xff0c;打开刚刚安装的 J-Flash V6.60c 选择创建新工程“Create a new project”&#xff0c;然后点击StartJ-Flash 点击之后跳出Select device框&#xff0c;选择TI 选择TI后&#xff0c…

水库大坝安全监测参数与设备

智慧水利中&#xff0c;水库大坝的安全监测必不可少。做好水库大坝的安全监测&#xff0c;是确保水库大坝结构安全和预防灾害的重要手段。对于预防灾害、保护人民生命财产安全、优化工程管理、改进工程设计、保护环境资源和提高公众信任等方面有着重要的意义。 水利水库大坝安全…

如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

与地理位置有关的应用相信大家都很熟悉了&#xff0c;无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配&#xff0c;我们几乎每天都在使用类似的功能与服务。不过你有没有想过&#xff0c;如何在自己开发的应用中嵌入类似的功能&#xff1f; 本文Akamai将为大家提…

韩墨耘——当代大风堂门人代表人物

韩墨耘 中央美术学院客座教授 全国书画艺术委员会副主席 中国书画家协会理事 荣宝斋签约画家 张大千大风堂国展班主任导师 国画大师何海霞亲传弟子 韩墨耘&#xff1a;62年生于洛阳&#xff1b;著名画家、美术教育家、书法家&#xff0c;现居北京。出身书香门第&#xf…

吐血整理几款常见的录屏软件,收藏起来!

录屏软件在我们日常工作和生活中扮演着越来越重要的角色&#xff0c;无论是帮助我们记录屏幕操作&#xff0c;还是制作教学视频或演示文稿&#xff0c;都离不开这些优秀的录屏软件。在市场上有许多不同的录屏软件可供选择&#xff0c;今天小编吐血整理了几款常见且受欢迎的录屏…

(汇川H5U-A8)Modbus Poll与AutoShop使用RS-485通讯

一、初步认识: AutoShop: Modbus Poll: 1、连接配置 ConnectionSerial PortRS-485转串口,所以是串口Serial SettingsCOM3当你插入串口后,会显示新的一个端口,就是这个端口通讯速率9600与PLC协议配置一致数据长度8与PLC协议配置一致奇偶校验位0与PLC协议配置一致停止位2…