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

一般情况下 .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 = 640
    height = 480
    output_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)
相关推荐
fantasy_arch2 小时前
pytorch例子计算两张图相似度
人工智能·pytorch·python
七七&5563 小时前
2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
开发语言·网络·golang
java坤坤3 小时前
GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
开发语言·后端·golang
元清加油3 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
健康平安的活着4 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
WBluuue4 小时前
数学建模:智能优化算法
python·机器学习·数学建模·爬山算法·启发式算法·聚类·模拟退火算法
赴3355 小时前
矿物分类案列 (一)六种方法对数据的填充
人工智能·python·机器学习·分类·数据挖掘·sklearn·矿物分类
大模型真好玩5 小时前
一文深度解析OpenAI近期发布系列大模型:意欲一统大模型江湖?
人工智能·python·mcp
RPA+AI十二工作室5 小时前
亚马逊店铺绩效巡检_影刀RPA源码解读
chrome·python·rpa·影刀
DjangoJason5 小时前
C++ 仿RabbitMQ实现消息队列项目
开发语言·c++·rabbitmq