python rgb565_读取RGB565格式的图像

python rgb565_读取RGB565格式的图像前言 笔者准备参加校内的一个循线小车大赛 会用到摄像头 特写此文章以误导队友 逃 之前准备用 ov7725 摄像头 这款摄像头据了解只能输出格式为 RGB565 的图片 作为从来没有接触过底层的小白 根本不知道这种格式的图片是什么东西 很懵 后来在师兄的帮助下 加上在网上了解了一下 发现 ov7725 这款摄像头并不是太适合 STM32F4 这块板子 而且跟目前手头上的开发板也不匹配 故准备退货 换摄像头 ov26

前言:笔者准备参加校内的一个循线小车大赛,会用到摄像头,特写此文章以误导队友(逃)

之前准备用ov7725摄像头,这款摄像头据了解只能输出格式为RGB565的图片,作为从来没有接触过底层的小白,根本不知道这种格式的图片是什么东西,很懵。

后来在师兄的帮助下,加上在网上了解了一下,发现ov7725这款摄像头并不是太适合STM32F4这块板子,而且跟目前手头上的开发板也不匹配,故准备退货,换摄像头ov2640。这款摄像头功能更强,可以支持RGB565、JPEG、YUV和YCbCr格式的输出。

看到“JPEG”这几个字的我甚是激动,这不就是我在Windows上常用的图片格式吗?以前用openCV里面的库函数不是很简单就读取了.jpg后缀的图像了吗?读取出来的RGB矩阵就很好处理了啦!于是我露出了势在必得的微笑,不就是手写一个转换的函数吗?简单!。。。结果今天下午我找到了这段话:python rgb565_读取RGB565格式的图像劝退警告

JPEG(Joint Photographic Experts Group)是一个国际图像压缩标准,JPEG图像压缩算法能够在提供良好的压缩性能的同时,也具有比较好的重建质量,被广泛应用于图像、视频处理领域。以下是JPEG与.jpg和.jpeg的关系:JPEG本身只有描述如何将一个影像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。.jpeg/.jpg是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。

所以,手写一个解析JPEG格式图片的算法难度较大也没有必要,于是我只能转向陌生的RGB565格式了。经过了解后,发现RGB565格式没有想象中那么难,以下是学习笔记:RGB555

RGB555是RGB格式的一种,RGB555格式中一个像素占据两个字节,也就是16位,而RGB中的red、green和blue分别用五个字节来表示,高字节的第一位是空字节,不存储任何信息,其信息存储的示意图如下:python rgb565_读取RGB565格式的图像RGB565

RGB565同样是用两个字节十六位来存储像素点的信息,而在RGB565中,R通道占据5个字节,G通道占据6个字节,B通道占据5个字节,示意图如下:python rgb565_读取RGB565格式的图像RGB888(RGB24)

RGB888也叫RGB24,在RGB24中,每个通道都占据8个字节,也就是0到255。使用RGB888格式,理论上可以产生1670万中色彩,在bmp文件中,图像数据就是由RGB24格式存储的。RGB24是目前最常用的图像格式,读者可以试着将RGB888转化到RGB565或555,可以发现成像质量差了很多。BMP文件

bmp是“bitmap”的简写,位图。在Windows环境下运行的所有图象处理软件都支持bmp图像文件格式,Windows系统内部各图像绘制操作都是以bmp为基础的。一个bmp文件包含以下部分:位图文件头①、位图信息段(bmp文件尺寸)②、调色板信息(可能没有)③、RGB像素信息④,一个bmp文件可以用一段代码描述:

typedef struct tagBITMAP_FILE {

BITMAPFILEHEADER bitmapheader; //①BITMAPINFOHEADER bitmapinfoheader; //②PALETTEENTRY palette[256]; //③UCHAR *buffer;

//UCHAR 大小1字节(同BYTE), 在VC6下} BITMAP_FILE;

所以,目前的任务可以分为如下两个部分:

PC端:在PC端将后缀名为.jpg的图片中的信息提取出来,转换为RGB565格式输出到文本文档中(代码在最下面,用python写的);

编写程序将RGB565的各个字节转化为RGB矩阵;

对RGB矩阵进行操作,得到赛道的轮廓位置;

将赛道轮廓坐标信息转化为赛道距离车体中心的偏移量,反馈给PID。

移动端:对摄像头进行底层配置,获取摄像头得到的RGB565数据;

将PC端流程移植到移动端。

#JPG turn to RGB565

#import os

#import sys

#import PIL

#from PIL import *

import PIL.Image as Image

#import file

im = Image.open(“test.jpg”)

myfile = open(“test.txt”, “w”)

myfile.write(“/* Image Width:%dHeight:%d*/” % (im.size[0], im.size[1]))

myfile.write(“\n”)

myfile.write(“unsigned short image[]={“)

myfile.write(“\n”)

#print(“/* Image Width:%d Height:%d */” % (im.size[0], im.size[1]))

#print (“unsigned short image[]={“)

pix = im.load()

#w is the horizontal axis of the pixels’ value of the picture

#h is the vertical axis of the pixels’ value of the picture

for h in range(170):

myfile.write(“\n”)

for w in range(120):

if w < im.size[0]:

R = pix[w,h][0]>>3

G = pix[w,h][1]>>2

B = pix[w,h][2]>>3

rgb = (R<<11)|(G<<5)|B

myfile.write(“0x%x,” % (rgb))

#print(“0x%x,” % (rgb))

else:

rgb = 0

myfile.write(“0x0,”)

#print(“0x0,”)

myfile.write(“};”)

#print(“};”)

myfile.close()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213684.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:52
下一篇 2026年3月18日 下午5:53


相关推荐

  • 模型调参:分步骤的提升模型的精度

    模型调参:分步骤的提升模型的精度

    2021年11月21日
    47
  • 微生物组-宏基因组分析第9期(报名直播课免费参加线下2020.10本年最后一期)

    微生物组-宏基因组分析第9期(报名直播课免费参加线下2020.10本年最后一期)福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析、宏基因组、Python课程和转录组的线上直播课。报名参加线上直播课的老师可在1年内选择参加同课…

    2022年5月29日
    35
  • phpstrom2019.3.3激活码破解方法

    phpstrom2019.3.3激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    82
  • codemirror自定义代码提示_96图文编辑器

    codemirror自定义代码提示_96图文编辑器前提写这个的目的是因为之前项目里用到过CodeMirror,觉得作为一款在线代码编辑器还是不错,也看到过有些网站用到过在线代码编辑,当然我不知道他们是用什么做的,这里我把公司项目里用到的那部分抽出来,单独写篇博客,并把抽出来的那部分代码提交到GitHub去简单介绍CodeMirror是一款在线的支持语法高亮的代码编辑器。官网:http://codemirror.net/可…

    2022年8月14日
    7
  • 2021年G3锅炉水处理最新解析及G3锅炉水处理复审模拟考试「建议收藏」

    题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:G3锅炉水处理最新解析考前必练!安全生产模拟考试一点通每个月更新G3锅炉水处理复审模拟考试题目及答案!多做几遍,其实通过G3锅炉水处理考试试题很简单。1、【多选题】玻璃器皿洗涤的标准是()。(AE)A、.均匀润湿B、.无污点C、.无油污D、.透明E、.无水珠2、【多选题】锅炉结生水垢的主要原因是()。(ABCDE)A、.溶解度降低B、.受热分解C、.相互反应D、.水的蒸发,…

    2022年4月15日
    44
  • windows ffmpeg安装部署

    windows ffmpeg安装部署目录安装包下载解压安装包配置环境变量总结安装包下载作为音视频处理重要软件 ffmpeg 是一定要装好的 windows 安装包下在链接 资源包地址解压安装包下载安装包后解压到需要的目录 配置环境变量找到控制面板 gt 点击系统 gt 点击高级系统设置 gt 点击环境变量配置解压或文件夹路劲到 Path 变量中 一直确认后 点击 win r 打开 cmd 输入 ffmpeg i 命令验证一下是

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号