如何将内存图像数据封装成QImage V1

2023-11-12

如何将内存图像数据封装成QImage
        当采用Qt开发相机数据采集软件时,势必会遇到采集内存图像并进行处理(如缩放、旋转)操作。如果能够将内存图像数据封装成QImage,则可以利用QImage强大的图像处理功能来进行图像处理,并能很好的进行显示。
       下面以灰度相机为例,介绍封装方法:
       第一步:首先根据相机的SDK内的读图像函数,获取图像数据imgData、宽度imgWidth和高度imHeight。
       第二步:申请QImage对象,注意类型是Format_RGB32.

       第三步:利用成员函数setPixel()设置QImage像素。由于相机输出的图像是灰度图像,每一位置的R、G、B分量相等且均等于当前位置的像素值。

       具体程序如下:

	QImage desImage = QImage(imgWidth,imgHeight,QImage::Format_RGB32); //RGB32

	//RGB分量值
	int b = 0;
	int g = 0;
	int r = 0; 

	//设置像素
	for (int i=0;i<imgHeight;i++)
	{
		for (int j=0;j<imgWidth;j++)
		{
			b = (int)*(imgDataNew+i*imgWidth+j);
			g = b;
			r = g;
			desImage.setPixel(j,i,qRgb(r,g,b));
		}
	}


对于灰度图像数据,如下封装方式是错误的。
QImage desImage = QImage(imgData, imgWidth, imgHeight, QImage::Format_Indexed8)
原因是QImage的构造函数中写道:
Constructs an image with the given width, height and format, that uses an existing memory buffer, data. The width and height must be specified in pixels,data must be 32-bit aligned, and each scanline of data in the image must also be 32-bit aligned.


神爱世人,甚至将他的独生子赐给他们,叫一切信他的,不至灭亡,反得永生。

——【圣经·约翰福音3:16】



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将内存图像数据封装成QImage V1 的相关文章

  • win10下qt 中没有代码提示框了怎么办?

    在这里我也找了好久 发现是跟你装的输入法有冲突了 所以代码提示没有了 请你切换到英文的输入下 把你的输入法换成标准的英文输入输入状态 图片如下 换成这样就可以提示了 如图所示完美解决不能提示的问题 好了完美解决问题 在这里我放上我讲的几个课
  • QtConcurrent 线程使用说明

    关于Qt Concurrent 我们首先来看看Qt Assitant是怎么描述的 The QtConcurrent namespace provides high level APIs that make it possible to wr
  • Qt发展历史及其特点简介

    Qt 是一个跨平台的C 应用程序框架 支持Windows Linux Mac OS X Android iOS Windows Phone 嵌入式系统等 也就是说 Qt 可以同时支持桌面应用程序开发 嵌入式开发和移动开发 覆盖了现有的所有主
  • 如何使用QString::arg()

    如何使用QString arg 在Qt Asistant中 QString arg的定义如下 QString QString arg const QString a int fieldWidth 0 const QChar fillChar
  • Qt中定义全局变量方法

    在使用qt编程时经常要使用到全局变量 全局变量该如何去定义和初始化呢 有两种方式 第一种使用extern 关键字 global h extern int a global cpp static int a 1 myfile cpp incl
  • Qt实战之实现图片浏览系统

    引言 本系统支持 自动播放 左右拖动切换 点击列表切换 点击按钮切换 是一个标准的图像浏览软件 Windows 图片浏览器 可以查看当前文件夹下的图片 往上翻 往下翻并且自动播放 此系统增加一个列表 本文福利 莬费领取Qt开发学习资料包 技
  • 聊聊Qt中的Widget调色板QPalette

    在实际的应用开发中 经常需要对某个窗体或某个控件的颜色外观 如背景色 前景色等进行设置 已达到界面美化的效果 Qt中的窗体或控件都是Widget类 Qt中提供的调色板QPalette类就是专门用于管理控件的外观显示 QPalette类相当于
  • 【Qt】QModbusDevice类

    1 概述 QModbusDevice类是Modbus类 QModbusServer和 QModbusClient的基类 Header include qmake QT serialbus Since Qt 5 8 Inherits QObj
  • QT编程----事件(一)

    review ui 生成 h cpp文件 uic form1 ui o form1 h uic form1 ui i form1 h o form1 cpp C 三个特点 继承 重载 封装 QT程序设计进阶 事件 Qt事件 Qt程序是事件驱
  • qt creator编译报错:parse error

    qt creator编译报错 parse error 利用qt creator编译qt工程时 出现报错信息parse error 出现错误的文件是pri文件 出现这种错误 一般是pro或pri出现了语法错误 经过检查 发现我的报错原因是pr
  • 【Qt编程笔记】采用遍历方式删除QList中全部元素的方法

    QList类是Qt提供的链表模板类 在日常工作和学习中经常会用到 虽然QList操作十分便利 但是在用遍历方式删除全部元素时很可能会因为疏忽造成没有将元素全部删除 从而给程序留下隐患 下面小结一下采用遍历方式删除QList中全部元素的方法
  • Qt中的主窗口QMainWindow

    GUI应用程序都有一个主窗口 虽然前面讲到的QWidget组件也可以定义生成主窗口 但是Qt还定义了一个专门用于实现主窗口的类QMainWindow 为什么 跟QDialog一样的道理 主窗口具有许多主窗口特有的元素组件 为了程序的复用性
  • 如何使用QMessageBox(用法举例)

    如何使用QMessageBox 用法举例 QMessageBox是Qt编程中常用的类 使用方便 下面给出该类的普通用法实例 希望对你有所帮助 1 包含头文件 include
  • QT容器详解

    QString类 隐式共享 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作 隐式数据共享类当作为函数参数传递的时候 不仅安全而且效率很高 因为传递的时候只是传递了数据的指针 数据本身只当自己被修改的时候才会去复制 简称写时复制 数
  • Qt Xlsx的基本使用

    前言 在很多时候 我们需要将数据导出 之前我是将数据表导出为CSV格式 CSV文件虽然可以用Excel打开 但相对于真正的Xlsx文件 还是有许多不足的 偶然之间 发现了QtXlsx这个第三方库 1 QtXlsx官网对QtXlsx的介绍 Q
  • Qt安装(Windows平台)

    Qt 的安装组件分为两部分 一部分是 Qt 5 9 分类下的 该分类包含的是真正的 Qt 开发库组件 另一部分是 Tools 分类下的 该分类包含的是集成开发环境和编译工具 Qt 5 9 分类下的开发组件 组件 说明 MinGW 5 3 0
  • 基于Qt的Sapera LT开发

    基于Qt的Sapera LT开发 基于Qt来开发Sapera LT 需要经过以下几个步骤 1 在建立的Qt工程添加Sapera LT的相关路径 1 右键工程 Properties 2 Configuration Properties C C
  • Qt之QSS中替代background-position的方法。

    学过css的朋友 应该都多少了解一些雪碧图相关的知识 雪碧图 用的就是background position来确定选取的素材位置 比如 素材中每张扑克的宽高分别为49px 66px 如果我要选用红桃8 我就会在css中写 backgroun
  • QT编程之信号和槽机制知识

    qt知识总结 一 常见的父窗口有3类 1 QWidget 它是所有对象的基类 继承自QOject和OPaintDevice 2 QMainWindow 它提供了一个主要的应用窗口 可以用来构建APP的应用界面 3 QDialog 对话框 其
  • Qt Quick 工程创建

    一 简介 Qt Quick是Qt框架中的一个模块 用于创建现代 响应式的用户界面 它基于QML Qt Meta Object Language 语言和Qt Quick Controls库 提供了一种声明性的方式来构建用户界面 Qt Quic

随机推荐

  • CentOS 使用nc命令进行端口扫描

    目录 CentOS 6 中nc命令的使用 CentOS 7 中nc命令的使用 使用nc命令可以探测目标主机的端口 但是在Centos 6 和 CentOS 7中这个命令的使用有所不同 甚至可以说功能已经不同 下面分别是CentOS 6 和
  • gitee密码修改后,pycharm权限不够提醒(windows10)

    问题 gitee密码修改后 pycharm更新代权限不够提醒 windows10 解决办法 gitee密码修改后 要在windows中同时进行修改 步骤如下 具体如图 控制面板 gt 所有控制面板项 gt 凭据管理器 gt Windows凭
  • vue 学习相关笔记大全

    与三阶段无关 框架是什么 封装与业务 功能 无关的代码块 简化了我们对于某些功能的代码量 但是我们需要记一套当前框架的语法 淘宝镜像 npm的服务器在国外 咱们国内下载的时候很慢 淘宝就自建了一个服务器 每个10分钟 就把npm的服务器里面
  • 这是一份面向3年以上Android开发者的中高级面试宝典,拔剑金九银十,大厂直通车

    前言 这是 拔剑金九银十 的第二篇文章 本文主要针对3年以上的Android开发者进阶面试中高级开发工程师而整理 三年以下小伙伴请移步 这是一份面向0 3年Android开发者的面试宝典 2020一线互联网大厂面试真题系统收录 希望可以对你
  • Arthur系统性详解微服务-完善中

    第一篇 微服务的意义 1 常见架构对比 第二篇 微服务的构建 1 微服务建模关注点及方法论 1 1 服务分类 1 2 服务模型 1 3 服务边界 1 4 服务数据 2 服务拆分和集成 2 1 服务拆分及方法论 2 1 1 服务拆分的维度 策
  • 配置环境说明

    工具及环境介绍 Eclipse 是一个开放源代码的 基于Java的可扩展开发平台 就其本身而言 它只是一个框架和一组服务 用于通过插件组件构建开发环境 Tomcat是一个应用服务器 他可以运行按照J2EE中的Servlet规范编写好的Jav
  • mysql数据库常用命令

    1 显示当前数据库服务器中的数据库列表 mysql gt show databases 2 创建数据库 mysql gt create database item character set utf8mb4 3 创建用户 mysql gt
  • unity3d 摄像机跟随角色时被物体遮挡解决方案

    unity3d 摄像机跟随角色时被物体遮挡解决方案 未被遮挡时 为了解决这个问题 在这里我们需要用到 Physics RaycastAll 使用方法详见圣典 首先 我们引入命名空间 System Collections Generic 然后
  • 电压电流双环控制PI参数计算01

    1 截止频率 将内环看作一个采样环节 对外环给定信号进行采样 同理驱动电路对内环给定信号进行采样 为保持环路稳定 外环截止频率 lt 内环截止频率 lt 开关频率 通常内环截止频率一般设置为开关频率的1 10 外环截止频率一般设置为开关频率
  • 内部排序算法比较(超详解)

    一 题目描述 通过随机数据比较各排序算法的关键字比较次数和关键字移动次数 以 及执行时间 取得直观感受 二 设计要求 一 需求分析 实现各排序算法 分别进行以下各组比较 并进行总结 一 各算法在不同规模下的比较 1 比较范围 直接插入排序
  • 辗转相除法求最大公约数 C/C++

    文章目录 辗转相除法的概念 用递归实现 用循环实现 辗转相除法的概念 辗转相除法是用来求两个正整数最大公约数的算法 古希腊数学家欧几里得在其著作 The Elements 中最早描述了这种算法 所以又被命名为欧几里得算法 扩展欧几里得算法可
  • 什么是Portlet ?

    什么是Portlet 作者 Sunil Patil 译者 observer 版权声明 任何获得Matrix授权的网站 转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 作者 Sunil Patil observer 原文地址 ht
  • springboot 之yaml配置文件注入

    配置文件 spring boot使用一个全局配置文件 配置文件的名称是固定的 application properties 和application yml文件 默认是 properties文件 配置文件的作用 修改spring boot自
  • MVC中Ajax的简单实现(多种传值方法)

    这几天在练习下MVC中Ajax中视图与控制器之间传值问题 时不时有些写法错误 导致传值失败 特把成功传值实现方法写下 Index cshtml视图
  • Python代码~加油

    import turtle as t import time 由于会重复用到多次以下操作 故写成函数 def hua a b c d t goto a b t down t goto c d t up def heng a b c hua
  • Unhandled exception:java.text.ParseException

    最近遇到一个这样的错 在我敲完这两句话后 下面自动跳红线了那么这是怎么回事呢 解决办法 在方法声明后加 throws Exception 为什么要这么写 throws 的作用是不在本方法中进程异常处理 而是抛给调用此方法的类中进行处理 解释
  • n个顾客等待时间最短(贪心算法)

    设有n个顾客同时等待一个服务 顾客i需要的服务时间为ti 1 lt i lt n 共有s处可以提供此服务 应如何安排n个顾客的服务才能使平均等待时间达到最短 平均的带时间时n个顾客等待服务时间的总和除以n 方法 先按从大到小排序 然后再挨个
  • datax编译clickhousewriter插件,及mysql->ck自动增量

    安装clickhosue Clickhouse安装 新手必看 初念 LL的博客 CSDN博客 clickhouse安装 安装mysql 在clickhouse创建表 字段和需导入的mysql表相同 datax实现mysql到clickhou
  • 树的广度优先遍历

    树的广度优先遍历原理 树的广度优先遍历就是对每一层的节点依次访问 一层访问结束后进入下一层 直到遍历完所有节点 每个节点只访问一次 树的广度优先遍历我们可以利用队列先进先出的特点来实现 代码实现 ArrayList
  • 如何将内存图像数据封装成QImage V1

    如何将内存图像数据封装成QImage 当采用Qt开发相机数据采集软件时 势必会遇到采集内存图像并进行处理 如缩放 旋转 操作 如果能够将内存图像数据封装成QImage 则可以利用QImage强大的图像处理功能来进行图像处理 并能很好的进行显