图像处理基础 | 格式转换.rgb转.jpg 灰度图 python

news/2024/12/25 3:08:05/

一般情况下 .rgb 格式的存储顺序:

颜色顺序:

一般情况下,.rgb 文件存储的是原始的 RGB 数据(而不是 BGR 数据)。即每个像素是由 R(红色)、G(绿色)、B(蓝色)三个分量组成。

每三个字节(8-bit)代表一个像素的 RGB 值。
因此,图像数据是按行(从上到下)按像素顺序依次存储的。

行顺序:

通常 .rgb 文件会按 从上到下 的顺序存储图像的各行(即第 1 行存储在文件的前面,第 N 行存储在文件的后面)。不过在某些图像生成工具或设备中,可能会使用 从下到上 的顺序存储(即第 1 行存储在文件的最后)。

每行的存储顺序:

每行的数据会按顺序存储,即第一个像素的 R、G、B 数据存储在前,第二个像素的 R、G、B 数据存储在后,以此类推。

在 OpenCV 和其他图像处理库中,图像的原点通常位于左上角,而在某些情况下,.rgb 文件可能是从左下角开始存储的 ,下述代码是从左下角开始存储的,所以需要翻转一下图片
代码如下:

python">def rgb_to_gray_jpg(rgb_data, width, height, output_path):rgb_data = np.frombuffer(rgb_data, dtype=np.uint8)rgb_image = rgb_data.reshape((height, width, 3))#以下两行看情况rgb_image = np.flipud(rgb_image)rgb_image = np.fliplr(rgb_image)gray_image = cv2.cvtColor(rgb_image, cv2.COLOR_RGB2GRAY)quality = [int(cv2.IMWRITE_JPEG_QUALITY), 100]cv2.imwrite(output_path, gray_image,quality)if __name__ == '__main__':# 假设图像宽度和高度width = 640height = 480output_path = 'output_gray_image.jpg'# 读取 .rgb 文件with open('4.rgb', 'rb') as f:rgb_data = f.read()rgb_to_gray_jpg(rgb_data,width,height,output_path)

http://www.ppmy.cn/news/1557891.html

相关文章

VUE+Node.js+mysq实现响应式个人博客|项目初始化+路由配置+基础组件搭建

Day 1 开发文档:项目初始化与基础架构搭建 一、项目初始化 1. 创建项目 首先,我们使用 Vite 创建一个基于 Vue 3 的项目: # 创建项目 npm create vitelatest my-blog -- --template vue # 这条命令会创建一个名为 my-blog 的新项目&#…

R语言基础| 功效分析

写在前面 R语言在进行统计分析和数据处理方面具有多种优势,在R语言中进行功效分析(power analysis)同样很方便,R环境中有pwr、powerAnalysis、simr等包可支持功效分析,结合其可视化能力及与其它方法整合的灵活性&…

数据结构:双向循坏链表

目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插,头删 ,尾插,尾删 1.1双向循环链表的结构 …

jsp中的四个域对象(Spring MVC)

在Spring MVC中,Model中的数据会被自动放入到请求域(Request Scope)中。也就是说,当我们在控制器中使用model.addAttribute()时,这些属性会被放入到HttpServletRequest对象的属性中。 让我们通过代码来详细解释&#…

Cesium-(Primitive)-(EllipseOutlineGeometry)

EllipseOutlineGeometry 以下是 EllipseOutlineGeometry 类的构造函数属性,以表格形式展示: 属性名类型默认值描述centerCartesian3椭圆的中心点在固定坐标系中的坐标。semiMajorAxisnumber椭圆的长半轴长度,单位为米。semiMinorAxisnumber椭圆的短半轴长度,单位为米。elli…

虚幻5 UE5 UNREALED_API d虚幻的

在虚幻引擎的模块化系统中,UNREALED_API 用于声明那些需要被其他模块访问的类和函数。当你在一个模块中标记一个类或函数为 UNREALED_API 时,如果该模块被编译为DLL,那么这个宏会使得该类或函数在DLL边界上被正确地导出。如果其他模块依赖于这…

C语言学习-数组练习

1. 键盘录入一组数列&#xff0c;利用冒泡排序将数据由大到小排序 #include <stdio.h> #include <string.h> #define A_NUM 10int t1 0; int t2 0;/** *键盘录入一组数列&#xff0c;利用冒泡排序将数据由大到小排序 */ //使用常规冒泡完成 void t_1_1() {int i…

前端框架Vue的路由机制

大家好&#xff0c;我是G探险者。 最近在调试前端代码的时候&#xff0c;遇到一个问题。首先我们有一个门户页面&#xff0c;该页面里面有很多的豆腐块&#xff0c;每个豆腐块会配置一个系统的跳转连接。 我的系统就是其中一个豆腐块&#xff0c;我第一次登录进来之后&#xf…