202408830使用python3给BGR3的裸图加上BMP图的文件头

news2024/11/14 21:59:47

202408830使用python3给BGR3的裸图加上文件头
2024/8/30 20:20


缘起,获取SONY索尼的8530的机芯的4K的BGR3的裸图。可以使用7-yuv打开了。
如果直接可以给这张YUV图加上BMP格式的文件头,就可以直接使用标准的图像处理软件/ACDSee5.0打开了!
这样就会给调试过程中带来【极大的】方便!

公司不方便找到4K显示器,于是用家里的电脑截屏了一张BMP的4K/3840x2160分辨率的BMP图。

画图应用程序的原始/默认分辨率是你的电脑的主显示器的分辨率。
比如我用的笔记本电脑是1080p/1k,也就是1920x1080了!


好久没有碰C/C++了,直接使用python3来完成这项工作了。
首先,使用WIN11自带的画图工具生成一张4K分辨率的BMP图,然后使用python3读取前54个字节。
之后,与BGR3格式的裸图进行组装即可得到正常的4K分辨率的8530的机芯图。


python3的参考源码:
D:\4K>
D:\4K>python
Python 3.11.4 (tags/v3.11.4:d2340ef, Jun  7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> with open('test_0.yuv', 'rb') as source_file, open('4K.bmp', 'rb') as temp_file, open('target.bmp', 'wb') as target_file:
...     data = temp_file.read(54)
...     target_file.write(data)
...     data = source_file.read()
...     target_file.write(data)
...
54
24883200
>>>


# 打开源文件和目标文件
with open('test_0.yuv', 'rb') as source_file, open('4K.bmp', 'rb') as temp_file, open('target.bmp', 'wb') as target_file:
    # 读取源文件内容【BMP文件头】
    //data = temp_file.read()
    data = temp_file.read(54)
    # 将内容写入目标文件
    target_file.write(data)
    # 读取源文件内容【BGR3的裸图】
    data = source_file.read()
    # 将内容写入目标文件
    target_file.write(data)


唯一的小小的遗憾:生成的图是倒立的!
百度:BMP图 坐标系

很容易知道BGR3图的坐标系原点在左上角,BMP图的坐标系原点在左下角。
这样你组装后的图片就正好是倒立的!


参开资料:
https://blog.csdn.net/wowocpp/article/details/80805534
windows 坐标系 与 BMP 像素的映射关系


百度:Python读取二进制文件


!!!!
https://www.jb51.net/python/313993top.htm
Python读写二进制文件的示例详解【不能拷贝】
https://blog.csdn.net/m0_59236602/article/details/135714899
Python编程中如何读写二进制文件?
三、实际应用示例
2.复制二进制文件
有时候,我们需要将一个二进制文件复制到另一个文件中。下面是一个复制二进制文件的示例代码:

# 打开源文件和目标文件
with open('source.bin', 'rb') as source_file, open('target.bin', 'wb') as target_file:
    # 读取源文件内容
    data = source_file.read()
    # 将内容写入目标文件
    target_file.write(data)


https://blog.51cto.com/u_14844/11329687
python打开二进制dat文件 python 处理二进制文件 


https://blog.51cto.com/u_16175494/7637992
python读取2进制文件


https://blog.csdn.net/weixin_44609920/article/details/130163005
5.7:Python如何读取二进制文件?


百度:python打印16进制数
python文件之二进制文件的读写
python 二进制读取 前55个字节

!!!!
https://blog.51cto.com/u_16213385/7658233
python 读取二进制文件 部分字节

使用Python读取部分字节
在Python中,我们可以使用open()函数来打开一个二进制文件,并使用read()方法来读取文件的内容。默认情况下,read()方法会一次性读取整个文件的内容。但是我们可以通过指定读取的字节数来读取文件的部分内容。

下面是一个简单的示例代码,演示了如何读取二进制文件的部分字节:

with open('file.bin', 'rb') as f:
    # 读取前100个字节
    data = f.read(100)
    print(data)


百度:PYTHON格式化输出f


https://blog.csdn.net/pumpkin84514/article/details/140628581
python——格式化输出


https://www.cnblogs.com/fat39/p/7159881.html
python基础_格式化输出(%用法和format用法)


百度:python 循环
https://www.jb51.net/article/45864.htm
Python中for循环详解

>>> for i in range(5):             (1)
...     print i
0
1
2
3
4

D:\4K>python
Python 3.11.4 (tags/v3.11.4:d2340ef, Jun  7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> with open('4k.bmp', 'rb') as source_file:
...     data = source_file.read(54)
...     print(data)

...
b'BM6\xb0{\x01\x00\x00\x00\x006\x00\x00\x00(\x00\x00\x00\x00\x0f\x00\x00p\x08\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\xb0{\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> print(data[0])
66
>>> print('0x%02d', data[0])
0x%02d 66
>>> print('0x%02d'% data[0])
0x66

>>> for i in range(54):
...     print('0x%02x, '% data[i])

...
0x42,
0x4d,
0x36,
0xb0,
0x7b,
0x01,
0x00,
0x00,
0x00,
0x00,
0x36,
0x00,
0x00,
0x00,
0x28,
0x00,
0x00,
0x00,
0x00,
0x0f,
0x00,
0x00,
0x70,
0x08,
0x00,
0x00,
0x01,
0x00,
0x18,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xb0,
0x7b,
0x01,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
>>> exit()

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

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

相关文章

RISC-V单片机智能落地扇方案

在众多产品中,智能落地扇产品凭借其出色的性能和质量优势,备受消费者青睐。智能落地扇有着卓越的性能和智能化的操作。 RAMSUN提供的智能落地扇方案主控单片机芯片采用RISC-V微处理器,内置高速存储器,最高工作频率可达144MHz&…

【智能算法改进】多策略融合的改进黑猩猩搜索算法及其应用

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】黑猩猩优化算法(ChOA)原理及实现 2.改进点 改进的 Sine 混沌映射初始化种群 ChoA 种群随机初始化的方法导致种群多样性、均匀性差、容易出现边界聚集现象&#xff0c…

E30.【C语言】练习:sizeof和strlen的习题集(B)

Exercise 4:sizeof 字符串 求下列代码打印结果 #define CRT_NO_WARNINGNESS 1 #include <stdio.h> #include <string.h> int main() {char arr[] "abcdef";printf("%zd\n", sizeof(arr));printf("%zd\n", sizeof(arr 0));printf…

gitee 简单使用

目录 1. github 介绍 2. gitee 介绍 2.1 下载工具 2.2 创建仓库 2.3 clone 远程仓库到本地 2.4 上传代码 2.4.1 add:预添加到本地仓库 2.4.2 commit:提交代码到仓库 2.4.3 push:推送添加操作到远程仓库 3. 问题解决 3.1 文件推送成功&#xff0c;gitee没有绿点 3.2…

UR5e Gazebo仿真

一、环境准备 安装ROS Noetic 首先&#xff0c;确保你的Ubuntu 20.04系统已经安装了ROS Noetic。如果未安装&#xff0c;可以通过ROS的官方仓库进行安装。创建工作空间 创建一个新的ROS工作空间&#xff0c;用于存放UR5e相关的代码和配置文件。 bash复制代码 mkdir -p ~/ur5e…

Qt:玩转QPainter序列六(图形)

前言 继续看源码。 正文 剩下的大部分都是画各种图形的函数&#xff0c;它们一般都有多个重载版本&#xff0c;我就不一 一介绍使用了&#xff0c;只挑其中的一部分使用一下。 在 QPainter 类中&#xff0c;这些方法涉及到绘图的各种功能&#xff0c;主要用于设置视图变换、…

AI大模型日报#0830:智谱AI推出多款升级模型、阿里开源多模态Qwen2-VL

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;、“智谱AI”&#xff08;glm-4-0520&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅…

Vue前端开发必备工具——json-server模拟后端服务器

文章目录 1、简介2、安装3、快速使用(1)创建JSON文件&#xff1a;(2) 启动json-server(3) 使用API(4) 以其它端口号启动(5) 启动多个API 当我们用Vue开发前端时&#xff0c;如果想调用后端接口&#xff0c;又没有真实的后端接口服务器怎么办&#xff1f;答案是&#xff1a;可以…

数据结构(邓俊辉)学习笔记】串 05——KMP算法:理解next[]表

文章目录 1.快速移动2.避免回溯3.通配哨兵 1.快速移动 在接下来这节&#xff0c;就让我们从严格的意义上来理解 next 表的具体含义及其原理。 我们已经切实地看到&#xff0c; KMP 算法的优化效果首先体现在它可以使模式串得以快速地后移&#xff0c;而不是如蛮力算法那样只…

jmeter连接mysql数据库以及常规用法

1、在jmeter中新建一个测试计划&#xff0c;在测试计划界面中点击浏览&#xff0c;选择连接mysql数据库的jar包 如果没有jar包可以去网上下载&#xff0c;也可以通过如下链接进行下载 链接: https://pan.baidu.com/s/1BI6f19KSzXGlkSOwbnequw 提取码: gn8e 2、然后创建线程组&a…

CentOS7安装docker小记

首先你得需要有一个虚拟机&#xff0c;我的配置如图&#xff1a; 安装docker的工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 指定阿里云的仓库 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.re…

生信机器学习入门3 - Scikit-Learn训练机器学习分类感知器

1. 在线读取iris数据集 import os import pandas as pd# 下载 try:s https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.dataprint(From URL:, s)df pd.read_csv(s,headerNone,encodingutf-8)except HTTPError:s iris.data# 读取.data文件&#xff0c;…

使用python导出Excel表格中的lua配置

背景&#xff1a;游戏开发中&#xff0c; 策划使用Excel配置游戏中的参数数据&#xff0c;写一个工具用于导出这些配置 工具选择使用 python来开发&#xff0c;这样Windows、macOS、Linux平台都可以使用&#xff0c;而且有丰富的第三方模块。 本机先安装python&#xff0c;我…

nvidia-cuda-tensorrt-cudnn下载网站

tensorrt:https://developer.nvidia.com/tensorrt/download cudnn:https://developer.nvidia.com/rdp/cudnn-archive cuda:https://developer.nvidia.com/cuda-toolkit-archive

Python编码系列—Python微服务架构:构建可扩展的云原生应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

积极讨论取真经 自力更生辟新径 攻克难题会有时

你是如何克服编程学习中的挫折感的&#xff1f; 编程学习之路上&#xff0c;挫折感就像一道道难以逾越的高墙&#xff0c;让许多人望而却步。然而&#xff0c;真正的编程高手都曾在这条路上跌倒过、迷茫过&#xff0c;却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的…

火绒补充

目录 为什补充&#xff1f; 用户界面优化&#xff1a; 性能提升&#xff1a; 启发式检测和行为分析&#xff1a; 恶意网址拦截&#xff1a; 系统修复功能&#xff1a; 网络安全防护&#xff1a; 云查杀引擎&#xff1a; 漏洞修复和补丁管理&#xff1a; 隐私保护&…

C++类和对象(5)——运算符重载(以日期类为例)

运算符重载的作用 假设我们此时实现了日期类的运算符重载&#xff0c;我们就可以 实现如图的很多功能&#xff0c;完成日期计算器的底层代码。 运算符重载关键字 运算符重载的关键字是operator。 比如你想重载‘’运算符&#xff0c;那么语法格式就是 返回类型 operator …

Linux驱动开发基础(sr04超声波模块)

所学来自百问网 目录 1. SR04 超声波简介 2. 硬件设计 3. 软件设计 4. 示例代码 4.1 驱动代码 4.1.1 轮询模式 4.1.2 中断模式 4.3 应用程序 4.4 Makefile 4.5 实验效果 1. SR04 超声波简介 超声波测距模块是利用超声波来测距。模块先发送超声波&#xff0c;然后接…

大数据技术概述

4v特点 volume&#xff08;体量大&#xff09; velocity&#xff08;处理速度快&#xff09; variety&#xff08;数据类型多&#xff09; value&#xff08;价值密度低&#xff09; 核心设计理念 并行化 规模经济 虚拟化 分布式系统满足需求 系统架构 大数据处理流程 采集…