bgr24包装为bmp图像

code

void BGR24ToBMP(const int width, const int height, uint8_t *framedata, const char *outfile)
{BITMAPFILEHEADER bmp_header; // 声明BMP文件的头结构BITMAPINFOHEADER bmp_info;   // 声明BMP文件的信息结构unsigned int data_size = (width * 3 + 3) / 4 * 4 * height;FILE *fp = fopen(outfile, "wb");if (!fp){return;}// 文件标识填BM(0x4D42)表示位图bmp_header.bfType = 0x4D42;// 保留字段1。填0即可bmp_header.bfReserved1 = 0;// 保留字段2。填0即可bmp_header.bfReserved2 = 0;// 从文件开头到位图数据的偏移量(单位为字节)bmp_header.bfOffBits = sizeof(bmp_header) + sizeof(bmp_info);// 整个文件的大小(单位为字节)bmp_header.bfSize = bmp_header.bfOffBits + data_size;// 信息头的长度(单位为字节)bmp_info.biSize = sizeof(bmp_info);// 位图宽度(单位为像素)bmp_info.biWidth = width;// 位图高度(单位为像素)。若为正,则表示倒向的位图;若为负,则表示正向的位图bmp_info.biHeight = height;// 位图的面数。填1即可bmp_info.biPlanes = 1;// 单个像素的位数(单位为比特)。RGB各1字节,总共3字节,也就是24位bmp_info.biBitCount = 24;// 压缩说明。0(BI_RGB)表示不压缩bmp_info.biCompression = 0;// 位图数据的大小(单位为字节)bmp_info.biSizeImage = data_size;// 水平打印分辨率(单位为像素/米)。填0即可bmp_info.biXPelsPerMeter = 0;// 垂直打印分辨率(单位为像素/米)。填0即可bmp_info.biYPelsPerMeter = 0;// 位图使用的颜色掩码。填0即可bmp_info.biClrUsed = 0;// 重要的颜色个数。都是普通颜色,填0即可bmp_info.biClrImportant = 0;fwrite(&bmp_header, sizeof(bmp_header), 1, fp); // 写入BMP文件头fwrite(&bmp_info, sizeof(bmp_info), 1, fp);     // 写入BMP信息头uint8_t tmp[width * 3]; // 临时数据// 把缓冲区的图像数据倒置过来for (int i = 0; i < height / 2; i++){memcpy(tmp, &(framedata[width * i * 3]), width * 3); // 原图第一行的数据复制到tmpmemcpy(&(framedata[width * i * 3]),&(framedata[width * (height - 1 - i) * 3]), width * 3);      // 原图最后一行的数据复制到第一行memcpy(&(framedata[width * (height - 1 - i) * 3]), tmp, width * 3); // 原图第一行的数据复制到最后一行}fwrite(framedata, width * height * 3, 1, fp); // 写入图像数据if (fp){fclose(fp);fp = nullptr;}
}

performance

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

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

相关文章

[AIGC] Shell脚本在工作中的常用用法

Shell脚本是一种为 shell 编写的脚本程序。商业上的 Unix Shell 一般都配备图形界面&#xff0c;主要包括&#xff1a;Bourne Shell&#xff08;/usr/bin/sh或/bin/sh&#xff09;、Bourne Again Shell&#xff08;/bin/bash&#xff09;、C Shell&#xff08;/usr/bin/csh&…

简单多状态DP问题

这里写目录标题 什么是多状态DP解决多状态DP问题应该怎么做&#xff1f;关于多状态DP问题的几道题1.按摩师2.打家劫舍Ⅱ3.删除并获得点数4.粉刷房子5.买卖股票的最佳时期含手冷冻期 总结 什么是多状态DP 多状态动态规划&#xff08;Multi-State Dynamic Programming, Multi-St…

vue2实例实现一个初步的vue-router

vue2实例实现一个初步的vue-router 实现源码&#xff1a;vue2-review 1.App.vue 2.router目录下的index.js 3.自己实现的x-router.js 4.自己实现的xrouter-view.js 5.自己实现的xrouter-link.js 6.效果 微信公众号&#xff1a;刺头拾年

AI奥林匹克竞赛:Claude-3.5-Sonnet对决GPT-4o,谁是最聪明的AI?

目录 实验设置 评估对象 评估方法 结果与分析 针对学科的细粒度分析 GPT-4o vs. Claude-3.5-Sonnet GPT-4V vs. Gemini-1.5-Pro 结论 AI技术日新月异&#xff0c;Anthropic公司最新发布的Claude-3.5-Sonnet因在知识型推理、数学推理、编程任务及视觉推理等任务上设立新…

【雷达原理】雷达测角原理及实现方法

目录 一、雷达测角原理1.1 测角研究历史和现状1.2 测角方法总结1.3 3DFFT测角1.3.1 基本原理1.2.2 测角性能 二、MATLAB仿真案例参考文献 一、雷达测角原理 1.1 测角研究历史和现状 &#xff08;1&#xff09;早期采用窄波束对准目标&#xff0c;目标的角度对应于天线的角度读…

【动态规划】139. 单词拆分

139. 单词拆分 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/problems/word-break/description/ 问题描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字…

INS-GPS组合导航——卡尔曼滤波

系列文章目录 《SAR笔记-卫星轨道建模》 《SAR笔记-卫星轨迹&#xff08;三维建模&#xff09;》 《常用坐标系》 文章目录 前言 一、经典卡尔曼滤波 二、扩展卡尔曼滤波 三、无迹卡尔曼滤波 总结 前言 SAR成像仪器搭载于运动平台&#xff0c;平台的自定位误差将影响SAR…

使用 pip 换源的指南

使用 pip 换源的指南 Python 包管理工具 pip 通常从官方的 PyPI&#xff08;Python Package Index&#xff09;仓库下载包。但由于网络限制或速度问题&#xff0c;我们可以选择使用国内镜像源来加速包的下载。以下是如何通过不同方法更改 pip 的下载源&#xff1a; 一、通过命…

LeetCode-Leetcode 1120:子树的最大平均值

LeetCode-Leetcode 1120&#xff1a;子树的最大平均值 题目描述&#xff1a;解题思路一&#xff1a;递归解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点 root&#xff0c;找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…

还不知道工业以太网和现场总线区别???

工业以太网 工业以太网是一种专为工业环境设计的网络通信技术&#xff0c;它基于标准的以太网技术&#xff0c;但针对工业应用进行了优化。工业以太网能够适应高温、低温、防尘等恶劣工业环境&#xff0c;采用TCP/IP协议&#xff0c;与IEEE 802.3标准兼容&#xff0c;并在应用层…

Studying-代码随想录训练营day24| 93.复原IP地址、78.子集、90.子集II

第24天&#xff0c;回溯算法part03&#xff0c;牢记回溯三部曲&#xff0c;掌握树形结构结题方法&#x1f4aa; 目录 93.复原IP地址 78.子集 90.子集II 总结 93.复原IP地址 文档讲解&#xff1a;代码随想录复原IP地址 视频讲解&#xff1a;手撕复原IP地址 题目&#xff1…

安全架构概述_3.与信息安全相关的国内外标准及组织

1.国外标准 &#xff08;1&#xff09;可信计算机系统评估准则&#xff08;Trusted Computer System Evaluation Criteria&#xff0c;TCSEC&#xff09;&#xff0c;也称为“橘皮书”&#xff0c;1985年12月有美国国防部公布。 &#xff08;2&#xff09;信息技术安全评估准则…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中&#xff0c;常用到AHP-SWOT法进行定量分析&#xff0c;形成判断矩阵后&#xff0c;如何构造整洁的战略四边形是分析的最后一个环节&#xff0c;本文现将相关代码发布如下&#xff1a; import mpl_toolkits.axisartist as axisartist import …

玩转springboot之springboot定制嵌入式的servlet

springboot定制嵌入式的servlet容器 修改容器配置 有两种方式可以修改容器的配置 可以直接在配置文件中修改和server有关的配置 server.port8081 server.tomcat.uri-encodingUTF-8//通用的Servlet容器设置 server.xxx //指定Tomcat的设置 server.tomcat.xxx编写一个EmbeddedSer…

5. web信息收集(OWASP实战训练)

5. web信息收集&#xff08;OWASP实战训练&#xff09; 1. 信息收集概述2. Google hacking2.1 Site2.2 filetype2.3 inurl2.4 intitle2.5 intext2.6 实例2.7 符号 3. shodan hacking3.1 IP3.2 service/protocol3.3 keyword3.4 country3.5 product3.6 version3.7 hostname3.8 os…

解决本机电脑只能通过localhost访问,不能通过127.0.0.1访问

背景问题 有天我启动项目&#xff0c;发现项目连接Mysq总是连接不上&#xff0c;查了url、ip、port、用户名和密码都没有错&#xff0c;就是连接不上mysql数据库&#xff0c;后来通过查找资料发现有多个进程占用3306端口。 pid 6016 是mysqld服务 而pid 9672 是一个叫 svchos…

windows终端

只要你和计算机有交互不妨来看看 什么是终端&#xff1f; 终端其实就是一个命令窗口。你可以用它向电脑和操作系统发出指令&#xff1a;比如创建文件&#xff0c;删除文件之类的。 为什么要用终端&#xff1f;&#xff08;终端得好处&#xff09; windows最开始的时候时没有…

逆变器--学习笔记(一)

并网&#xff1a; 逆变器中的“并网”指的是逆变器将其产生的交流电与电网同步&#xff0c;并输送到公共电网中。并网逆变器通常用于太阳能发电系统和其他分布式发电系统&#xff0c;将其产生的电能输送到电网供其他用户使用。 THD谐波失真总量: 逆变器的THD&#xff08;Tot…

大模型系列课程学习-基于2080TI-22G魔改卡搭建双卡大模型训练平台(双系统)

1.选择合适的硬件配置 再配置电脑之前&#xff0c;需要确认自己需要的显存大小、主板、内存条、电源、散热等核心配件。经过前期调研&#xff0c;选择的硬件配置如下&#xff1a; &#xff08;1&#xff09;主板&#xff1a;华南X99_F8D(DDR4主板)&#xff0c;因为需要支持双卡…

Python: PyCharm 2023.1 调试

1.设断点 &#xff08;行号对应的红色点&#xff0c;在需要设置断点的代码行与行号之间鼠标点击即可以设置&#xff09; 2.shiftF9,或 altshiftf9 选择文件 或是在菜单 Run->debug "main" 或是在菜单Run->debug 选择文件 &#xff08;鼠标光标放在设置第一个…