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

【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强大功能的冰山一角。通过进一步的学习和实践,你可以利用这两个工具来创建更复杂的图像处理和计算机视觉应用程序。希望本文能为你的学习之旅提供帮助。记住,实践是最好的老师,所以不断实践和尝试新的项目是提高技能的最好方式。祝你学习愉快!

相关文章:

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

文章目录 前言line函数ellipse函数rectangle函数circle函数fillPoly函数putText函数总结 前言 在计算机视觉和图像处理领域,OpenCV是一个强大的库,提供了丰富的功能和算法。而Qt是一个跨平台的C图形用户界面应用程序开发框架,它为开发者提供…...

使用Nginx OpenResty与Redis实现高效IP黑白名单管理

1、引言 在当今数字化时代,网络安全已成为企业和个人用户关注的焦点。IP黑白名单作为一种有效的网络安全策略,允许我们精确控制对Web资源的访问权限。通过白名单,我们可以确保只有可信的IP地址能够访问敏感资源;而黑名单则可以阻…...

EasyExcel导入导出数据类型转换

前言: 1、基本数据类型转换:当前原始的数据类型是interger类型,需要在导出时将其映射为对应的字符串,并且导入时可以将字符串重新映射为interger类型。 2、时间格式转换:数据从数据库中获取的类型为LocalDate类型&…...

stm32入门-----EXTI外部中断(下——实践篇)

目录 前言 一、硬件介绍 1.对射红外线传感器 2.旋转编码器 二、EXTI外部中断C编程 1.开启RCC时钟 2.配置GPIOK口初始化 3.配置AFIO 4.配置EXIT 5.配置NVIC 三、EXIT外部中断项目实操 1.对射红外传感器计数 2.选择编码器计数 前言 本期接着上一期的内容继续学习stm3…...

深度学习落地实战:基于UNet实现血管瘤超声图像分割

前言 大家好,我是机长 本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代码与数据集。可通过百度云盘进行获取,实现开箱即用 …...

Python进阶(4)--正则表达式

正则表达式 在Python中,正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,它允许你使用一种特殊的语法来匹配、查找、替换字符串中的文本。 在这之前,还记得之前我们是通过什么方法分割…...

RCA连接器是什么?一文读懂

RCA连接器,也就是我们在电视机、DVD播放器、通讯设备、立体声设备和游戏设备后面常见的彩色插头,其历史可以追溯到近一个世纪以前。这种现今广泛使用的电缆接口,最初是由美国无线电公司(RCA)开发并命名的,在…...

【linux】服务器安装NVIDIA驱动

【linux】服务器安装NVIDIA驱动 【创作不易,求点赞关注收藏】😀 文章目录 【linux】服务器安装NVIDIA驱动一、关闭系统自带驱动nouveau二、下载英伟达驱动三、安装英伟达驱动1、禁用X服务器和相关进程2、在TTY终端安装驱动3、验证是否安装成功4、重新启…...

【达梦数据库】关于用户、模式、表空间等如何理解?

与MySQL的用户有所区别,MySQL是单实例多库,DM7以上版本是单库多实例架构, MySQL访问方式: 一个root访问多个库,访问前切换一下就ok 比如MySQL到DM的迁移是,MySQL的一个库对应dm中的一个表空间和一个用户。比…...

一篇就够mysql高阶知识总结

一、事务的ACID原则 序号原则说明1原子性(Atomicity)事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做2一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一…...

CTF-Web习题:[BJDCTF2020]ZJCTF,不过如此

题目链接:[BJDCTF2020]ZJCTF,不过如此 解题思路 访问靶场链接,出现的是一段php源码,接下来做一下代码审阅,发现这是一道涉及文件包含的题 主要PHP代码语义: file_get_contents($text,r); 把$text变量所…...

【IEEE出版】第四届能源工程与电力系统国际学术会议(EEPS 2024)

第四届能源工程与电力系统国际学术会议(EEPS 2024) 2024 4th International Conference on Energy Engineering and Power Systems 重要信息 大会官网:www.iceeps.com 大会时间:2024年8月9-11日 大会…...

浅谈Vue:text-align: center、align-items: center、justify-content: center三种居中的区别和用法

text-align: center、align-items: center 和 justify-content: center 是用于不同布局场景下的CSS属性。它们在水平和垂直居中元素方面有所不同,具体取决于你使用的布局模型(如块级元素、Flexbox、Grid)。以下是它们的区别和适用场景&#x…...

理解UI设计:UI设计师的未来发展机遇

UI设计师的出现是互联网时代的设计变革。随着移动互联网的快速发展,移动产品设计师非常短缺。高薪资让许多其他行业的设计师已经转向了UI设计。那么什么是UI设计呢?UI设计师负责什么?UI设计的发展趋势和就业前景如何?这些都是许多…...

关键字 internal

在C#中,internal 关键字是一个访问修饰符,它用于限制类型或类型成员的访问性。当一个类型(类、结构体、接口、枚举等)或类型成员(字段、属性、方法、事件等)被声明为 internal 时,它只能在同一程…...

C学习(数据结构)-->单链表习题

目录 一、环形链表 题一:环形链表 思路: 思考一:为什么? 思考二:快指针一次走3步、4步、......n步,能否相遇 step1: step2: 代码: 题二: 环形链表 I…...

MATLAB6:M文件和控制流

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉运用MATLAB的控制指令。   2. 理解M脚本文件和函数文件的本质区别。   3. 能够运用所学知识,编制程序解决一般的计算问题。 二、实验内容 1.for循环结构及注…...

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术 在当今的大数据时代,网络爬虫技术已经成为获取信息的重要手段之一。Python凭借其强大的库支持,成为了进行网页数据抓取的首选语言。在众多的爬虫库中,BeautifulSoup和Scrap…...

Linux应用——网络基础

一、网络结构模型 1.1C/S结构 C/S结构——服务器与客户机; CS结构通常采用两层结构,服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。 例如&…...

白骑士的C++教学实战项目篇 4.3 多线程网络服务器

系列目录 上一篇:白骑士的C教学实战项目篇 4.2 学生成绩管理系统 在这一节中,我们将实现一个多线程网络服务器项目,通过该项目,我们将学习套接字编程的基础知识以及如何使用多线程处理并发连接。此外,我们还将实现一个…...

使用KART-RERANK为AE视频片段自动生成标签与智能检索方案

使用KART-RERANK为AE视频片段自动生成标签与智能检索方案 你是不是也遇到过这样的烦恼?电脑里存了成百上千个After Effects(AE)视频模板和素材片段,每次想找个“科技感蓝色光效开场”,都得在文件夹里大海捞针&#xf…...

黑丝空姐-造相Z-Turbo开发入门:.NET生态下的模型调用与图像处理

黑丝空姐-造相Z-Turbo开发入门:.NET生态下的模型调用与图像处理 最近在.NET社区里,看到不少朋友对AI图像生成感兴趣,特别是想在自己的C#应用里集成这类能力。今天咱们就来聊聊,怎么在熟悉的.NET环境里,调用像“黑丝空…...

Qwen3-VL:30B保姆级教程:星图平台创建实例→Ollama验证→Clawdbot安装→飞书对接全链路

Qwen3-VL:30B保姆级教程:星图平台创建实例→Ollama验证→Clawdbot安装→飞书对接全链路 1. 引言:打造你的专属多模态AI助手 想象一下,你的团队群里发来一张复杂的业务图表,或者一张新产品的设计草图,大家正在热烈讨论…...

Qwen Pixel Art多场景落地:独立开发者打造像素艺术NFT发行工作流

Qwen Pixel Art多场景落地:独立开发者打造像素艺术NFT发行工作流 1. 像素艺术生成新选择 最近在独立开发者圈子里,像素艺术创作突然火了起来。你可能已经注意到,越来越多的NFT项目开始采用像素风格,从游戏角色到数字藏品&#x…...

Ostrakon-VL-8B一文详解:Qwen3-VL-8B基座模型在零售领域的领域适配方法

Ostrakon-VL-8B一文详解:Qwen3-VL-8B基座模型在零售领域的领域适配方法 如果你在零售行业工作,或者对AI在商业场景的应用感兴趣,那么今天要聊的这个模型可能会让你眼前一亮。想象一下,一个AI系统不仅能看懂货架上的商品&#xff…...

手把手教程:用mPLUG-Owl3-2B快速搭建你的专属图片聊天机器人

手把手教程:用mPLUG-Owl3-2B快速搭建你的专属图片聊天机器人 想不想拥有一个能看懂图片、还能跟你聊天的AI助手?比如你拍一张风景照,它能告诉你这是什么地方;或者上传一张产品图,它能帮你分析设计亮点。今天&#xff…...

Gemma-3 Pixel Studio入门指南:顶部像素控制面板功能详解与快捷操作

Gemma-3 Pixel Studio入门指南:顶部像素控制面板功能详解与快捷操作 1. 认识Pixel Studio的顶部控制面板 Gemma-3 Pixel Studio采用了创新的顶部"像素控制面板"设计,取代了传统AI工具的侧边栏布局。这个设计决策带来了两个显著优势&#xff…...

油猴脚本实战:打造自动化学习助手

1. 油猴脚本入门:从零开始理解自动化工具 第一次接触油猴脚本时,我完全被它的能力震惊了。这个安装在浏览器里的小插件,竟然能像魔法一样改变网页行为。简单来说,油猴(Tampermonkey)是个用户脚本管理器&…...

Dify 2026缓存机制到底改了什么?——基于源码级diff(commit: d4f8a2c…)与OpenTelemetry链路追踪的逐行解读

第一章:Dify 2026缓存机制重构的背景与设计哲学Dify 2026 的缓存机制重构并非一次简单的性能优化,而是面向多租户、高并发、LLM推理链路动态化的系统性演进。随着应用从单模型服务扩展至混合模型编排、RAG 实时索引、工具调用上下文持久化等场景&#xf…...

基于ESP32的低功耗隔空手势控制器设计

1. 项目概述隔空手势操控器 BlueGo 是一款面向人机交互场景的低功耗蓝牙外设系统,其核心设计目标是将传统触摸式、按键式交互范式迁移至无接触、空间化操作维度。该设备并非单一功能工具,而是融合了空鼠(Air Mouse)、手势识别&…...