【Qt+opencv】基础的图像绘制

文章目录

  • 前言
  • line函数
  • ellipse函数
  • rectangle函数
  • circle函数
  • fillPoly函数
  • putText函数
  • 总结


前言

在计算机视觉和图像处理领域,OpenCV是一个强大的库,提供了丰富的功能和算法。而Qt是一个跨平台的C++图形用户界面应用程序开发框架,它为开发者提供了创建现代化的桌面应用程序的所有必要功能。结合这两者,我们可以创建一个强大的图像处理应用程序。

本文将介绍如何使用Qt和OpenCV进行基础的图像绘制。我们将探讨如何在Qt应用程序中集成OpenCV库,以及如何使用OpenCV的函数在图像上进行基本的绘制操作。


line函数

  1. line: 该函数用于在图像上绘制一条线。
void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
  • img: 输入图像。
  • pt1pt2: 线段的两个端点。
  • color: 线段的颜色。
  • thickness: 线段的厚度。
  • lineType: 线段的类型。
  • shift: 坐标点的小数位数。

ellipse函数

  1. ellipse: 该函数用于在图像上绘制一个椭圆。
void ellipse(Mat& img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
  • img: 输入图像。
  • center: 椭圆中心的位置。
  • axes: 椭圆的长轴和短轴。
  • angle: 椭圆的旋转角度。
  • startAngleendAngle: 椭圆弧的起始角度和结束角度。
  • color: 椭圆的颜色。
  • thickness: 椭圆的厚度。
  • lineType: 椭圆的类型。
  • shift: 坐标点的小数位数。

rectangle函数

  1. rectangle: 该函数用于在图像上绘制一个矩形。
void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
  • img: 输入图像。
  • pt1pt2: 矩形的两个顶点。
  • color: 矩形的颜色。
  • thickness: 矩形的厚度。
  • lineType: 矩形的类型。
  • shift: 坐标点的小数位数。

circle函数

  1. circle: 该函数用于在图像上绘制一个圆。
void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
  • img: 输入图像。
  • center: 圆心的位置。
  • radius: 圆的半径。
  • color: 圆的颜色。
  • thickness: 圆的厚度。
  • lineType: 圆的类型。
  • shift: 坐标点的小数位数。

fillPoly函数

  1. fillPoly: 该函数用于在图像上填充一个多边形。
void fillPoly(Mat& img, const Point** pts, const int* npts, int ncontours, const Scalar& color, int lineType=8, int shift=0, Point offset=Point() )
  • img: 输入图像。
  • pts: 多边形的顶点。
  • npts: 多边形的顶点数。
  • ncontours: 要绘制的多边形数量。
  • color: 多边形的颜色。
  • lineType: 多边形的类型。
  • shift: 坐标点的小数位数。
  • offset: 所有点的偏移量。

putText函数

void putText(Mat& img, const String& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false)
  • img: 输入图像,我们将在这个图像上绘制文本。
  • text: 我们要绘制的字符串。
  • org: 文本应开始的点。这个点是字符串左下角的点。
  • fontFace: 字体类型。OpenCV提供了几种字体类型,如FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN等。
  • fontScale: 字体比例因子。这个值决定了文本的大小。
  • color: 文本的颜色。我们可以使用Scalar对象来定义BGR颜色。
  • thickness: 线条的厚度。如果它是负数,那么文本将被填充。
  • lineType: 线条的类型。
  • bottomLeftOrigin: 这是一个布尔值。如果它是真的,那么图像数据的原点位于左下角。否则,它位于左上角。

总结

通过本文,我们了解了如何在Qt应用程序中集成OpenCV库,并使用其进行基础的图像绘制。这只是OpenCV和Qt强大功能的冰山一角。通过进一步的学习和实践,你可以利用这两个工具来创建更复杂的图像处理和计算机视觉应用程序。希望本文能为你的学习之旅提供帮助。记住,实践是最好的老师,所以不断实践和尝试新的项目是提高技能的最好方式。祝你学习愉快!

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

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

相关文章

参与开源项目 MySQL 的心得体会

前言 开源项目的数量和种类都在急剧增长,涵盖了从操作系统、数据库到人工智能、区块链等几乎所有的技术领域。这为技术的快速创新和迭代提供了强大的动力,使得新技术能够更快地普及和应用. 目录 经历 提升 挑战 良好的编程习惯 总结 经历 参与开源…

微信小程序-实现跳转链接并拼接参数(URL拼接路径参数)

第一种常用拼接方法:普通传值的拼接 //普通传值的拼接checkRouteBinttap: function (e) {wx.navigateTo({url: ../checkRoute/checkRoute?classId this.data.classInfo.classId "&taskId" this.data.classInfo.taskId,})}第二种:拼接…

Linux Namespace

Linux namespaces 介绍 namespaces是Linux内核用来隔离内核资源的方式。通过namespaces可以让一些进程只能看到与自己相关的那部分资源。而其它的进程也只能看到与他们自己相关的资源。这两拨进程根本感知不到对方的存在。而它具体的实现细节是通过Linux namespaces来实现的。 …

(三)C++之运算符重载

一.概念 C准许以运算符命名函数&#xff01;&#xff01;&#xff01; string a “hello”; a “ world”;// (a, “world”); cout<<“hello”; // <<(cout, “hello”); 可重载的运算符 不可重载的运算符 二.成员函数式(第一个行参是对象的引用) class T…

orcad导出pdf 缺少title block

在OrCAD中导出PDF时没有Title Block 最后确认问题在这里&#xff1a; 要勾选上Title Block Visible下面的print

k8s学习笔记——dashboard安装

重装了k8s集群后&#xff0c;重新安装k8s的仪表板&#xff0c;发现与以前安装不一样的地方。主要是镜像下载的问题&#xff0c;由于网络安全以及国外网站封锁的原因&#xff0c;现在很多镜像按照官方提供的仓库地址都下拉不下来&#xff0c;导致安装失败。我查了好几天&#xf…

Nginx详解(超级详细)

目录 Nginx简介 1. 为什么使用Nginx 2. 安装Nginx Nginx的核心功能 1. Nginx反向代理功能 2. Nginx的负载均衡 3 Nginx动静分离 Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;在BSD-like 协…

你能分清工业领域这些常见的技术文档吗?

在制造业领域中&#xff0c;技术文档是不可或缺的宝贵资源。它们不仅是产品设计理念的载体&#xff0c;更是指导生产、保证质量、降低错误的关键。技术文档详尽描述了产品的每一个细节&#xff0c;从设计原理到零部件规格&#xff0c;从装配步骤到操作指南&#xff0c;无所不包…

RabbitMQ 如何保证消息的可靠性

在分布式系统中&#xff0c;消息队列&#xff08;如 RabbitMQ&#xff09;扮演着至关重要的角色&#xff0c;它们作为中间件&#xff0c;帮助系统解耦、异步处理任务、提升系统性能和可靠性。然而&#xff0c;在使用消息队列时&#xff0c;确保消息的可靠性是一个不可忽视的问题…

Java 中快速生成唯一id

&#x1f446;&#x1f3fb;&#x1f446;&#x1f3fb;&#x1f446;&#x1f3fb;关注博主&#xff0c;让你的代码变得更加优雅。 前言 Hutool 是一个小而全的Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xf…

关于dom4j主节点的xmlns无法写入的问题

由于最近需要做一个xml的文件&#xff0c;使用dom4j的时候发现了一个bug&#xff0c;就是我的xmlns根本无法写入到xml的头部标签中。 Element element document.addElement("test"); element.addAttribute("xmlns", "urn:Declaration:datamodel:sta…

使用 tcpdump 进行网络流量捕获与分析

目录 安装 tcpdump基本用法捕获网络流量指定网络接口捕获特定主机的流量捕获特定端口的流量捕获特定协议的流量 常用选项保存捕获的数据包从文件读取数据包显示数据包内容指定捕获数据包的长度限制捕获的数据包数量显示详细信息过滤表达式 示例捕获本地回环接口上的HTTP流量捕获…

Windows10 22H2专业工作站版:功能全新升级,工作更高效!

Windows10 22H2专业工作站版是一款专为具有高级数据需求的人士设计的操作系统&#xff0c;拥有强大的服务器级数据保护和性能&#xff0c;可以帮助用户不断突破高级工作负载的挑战。接下来系统之家小编给大家带来全新升级的Windows10 22H2专业工作站版系统&#xff0c;喜欢的用…

刚起步的家庭海外仓:涉及到的全部业务优化流程

对于家庭海外仓来说&#xff0c;最难的阶段应该就是刚起步的时候。对业务流程不熟悉&#xff0c;也没有客户积累&#xff0c;本身的预算又十分有限。 在这个情况下应该注意什么&#xff0c;怎样才能顺利的开展业务&#xff1f;今天我们就针对这个问题详细的梳理了一下家庭海外…

界面控件DevExpress Blazor UI v24.1 - 发布全新TreeList组件

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 DevExpress Blazor控件目前已经升级…

电脑屏幕录制怎么弄?分享3个简单的电脑录屏方法

在信息爆炸的时代&#xff0c;屏幕上的每一个画面都可能成为我们生活中不可或缺的记忆。作为一名年轻男性&#xff0c;我对于录屏软件的需求可以说是既挑剔又实际。今天&#xff0c;我就为大家分享一下我近期体验的三款录屏软件&#xff1a;福昕录屏大师、转转大师录屏大师和OB…

高频面试题-CSS

BFC 介绍下BFC (块级格式化上下文) 1>什么是BFC BFC即块级格式化上下文&#xff0c;是CSS可视化渲染的一部分, 它是一块独立的渲染区域&#xff0c;只有属于同一个BFC的元素才会互相影响&#xff0c;且不会影响其它外部元素。 2>如何创建BFC 根元素&#xff0c;即HTM…

maven项目容器化运行之2-maven中使用docker插件调用远程docker构建服务并在1Panel中运行

一.背景 公司主机管理小组的同事期望我们开发的maven项目能够在1Panel管理的docker容器部署。上一篇写了先开放1Panel中docker镜像构建能力maven项目容器化运行之1-基于1Panel软件将docker镜像构建能力分享给局域网-CSDN博客。这一篇就是演示maven工程的镜像构建、容器运行、运…

昇思25天学习打卡营第14天|DCGAN 与漫画头像生成:原理剖析与训练实战

目录 数据集下载 数据处理 构建生成器 构建判别器 模型训练 结果展示 数据集下载 首先尝试卸载已安装的 mindspore 库&#xff0c;然后通过指定的镜像源安装特定版本&#xff08;2.2.14&#xff09;的 mindspore 库。从指定的 URL 下载一个 zip 文件到当前目录下的 ./faces…

SMTP服务器地址与端口号有哪些关系与区别?

SMTP服务器地址如何正确配置&#xff1f;怎么验证服务器的地址&#xff1f; 了解SMTP服务器地址与端口号的关系与区别对于确保邮件系统的正常运作至关重要。AokSend将详细探讨这两者之间的关系和区别&#xff0c;并解释它们在邮件传输过程中的重要性。 SMTP服务器地址&#x…