RGB565转RGB888原理 (MATLAB代码)
项目里用了OV2640摄像头,传感器采集了数据后是以RGB565的形式存在的,后面还要对其做数据处理才能还原原彩色图像,那么什么是RGB565,什么是RGB888呢?来看图。
这下明白了吗?就是拆开原来的16位数据,分成3个通道的8位数据,可见RGB565转RGB888不会有数据损失,而RGB888转RGB565会丢失色彩信息。我的ppt里右边核心代码是C++的,完整C++带函数的代码去这儿看
https://blog.csdn.net/macunshi/article/details/85724223
下面给出一段完整的MATLAB代码。
这里我还提供一张RGB565存储方式的二进制数据文件,用MATLAB代码把它解析成RGB888就可以看了,需要跑代码的到这儿去下载RGB565的二进制文件样例。
注意:
代码里我们是以16位一个数读数据的,如果是8位一个读数据,就需要把相邻的两个数进行交换然后在做RGB565转RGB888,因为图片二进制数据是嵌入式平台采集的,这里存在一个大小端的问题,ARM用的大端,Intel x86用的小端,存储方式正好相反。
代码如下:
clc
clear all;
close all;
%以16位形式打开RGB565二进制文件,博文里有样例文件下载链接[FileName,PathName] = uigetfile('*','All Image Files','Select the image'); fidin=fopen([PathName FileName],'rb');
while ~feof(fidin)[RGB565_16,cnt]=fread(fidin,inf,'uint16');
endfclose(fidin);%提取每一个像素的16位数据
A=zeros(1200,1600);
for i=1:1200for j=1:1600A(i,j)=RGB565_16((i-1)*1600+j);end
endimgR = bitshift(bitand(A,63488),-8); %十进制 63488 为二进制 11111000 00000000
imgG = bitshift(bitand(A,2016),-3); %十进制 2016 为二进制 00000111 11100000
imgB = bitshift(bitand(A,31),3); %十进制 31 为二进制 00000000 00011111
im888 = uint8(cat(3,imgR,imgG,imgB)); %组合RGB数据,然后把16位强制转化为8位
imshow(im888);
完了跑出来的照片是一张草地里由下向上拍的鱼眼照片,是这个样子的:
RGB565转RGB888原理 (MATLAB代码)相关推荐
- SNV标准正交变换 原理 matlab代码说明
SNV标准正交变换 matlab代码说明 SNV 原理 SNV matlab 代码(原作者:Andrea Candolfi) SNV 原理 SNV matlab 代码(原作者:Andrea Cando ...
- matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~...
这篇博客是接着上一篇来哒,https://blog.csdn.net/luolan9611/article/details/94285158 本篇博客及上篇博客搜集的资料.实验代码.实验报告.PPT均 ...
- 畸变校正与极线校正(具体原理+Matlab代码)
附:相关需要的工具函数源代码(投影函数.校正矩阵计算等)见最下面 1. 畸变校正 1.1 形成原因 图像畸变一般有两种,第一种是透镜本身的形状有问题,使得图像发生径向畸变:第二种是透镜安装时与成像平面 ...
- 【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~
这篇博客是接着上一篇来哒,https://blog.csdn.net/luolan9611/article/details/94285158 本篇博客及上篇博客搜集的资料.实验代码.实验报告.PPT均 ...
- 牛头刨机械原理matlab代码
报告链接:https://www.cnblogs.com/zhou1106/p/13398663.html 下载链接:https://download.csdn.net/download/RONNIE ...
- 【红外技术】非均匀校正之两点校正(原理标定方法MATLAB代码效果)
创作时间:2022-05-06 非均匀校正之两点校正(原理&MATLAB代码&效果) 目录: 1.原理&标定方法 2.代码 3.效果 正文: 先看下效果 1.原理 红外焦平面的 ...
- KLT降维与图像压缩(附MATLAB代码)
KLT降维与图像压缩 KLT简述 步骤原理 MATLAB代码 结果分析 KLT简述 KLT (Karhunen-Loeve Transform) 是变换编码 (Transform Coding) 的一 ...
- 转: RGB565、RGB888互相转换原理和代码
转:http://www.xuebuyuan.com/935987.html 背景:在我们的计算机中图像是以RGB888格式显示图像的,24位图每个像素保存了32bit的数据,即RGB888+Alph ...
- PCA降维算法原理及代码实现(python和matlab)
常见的数据降维算法有:奇异值分解(SVD).主成分分析(PCA).因子分析(FA).独立成分分析(ICA). PCA降维的基本思想:通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值.特征向量. ...
最新文章
- Java 变量声明和赋值
- python中运算的英文_[lemon]Python中的运算符,LemonPython
- php中学院与专业的级联,SQLite中使用CTE巧解多级分类的级联查询
- 你能抱我一下,好吗?
- 小学音乐教学和计算机的融合,【多媒体技术论文】小学音乐多媒体教学融入策略问题(共5881字)...
- 双线程交替修改变量 条件变量
- 如果你是加勒比海盗首领,会选择哪种算法来使价值最大化?
- dwg格式的计算机图,电脑上怎么打开dwg文件?
- 学习Java,你能做这些工作:
- 如何测试充电宝输出电压-20210127
- iOS开发项目实战狗粮
- 第九周项目三:星星图案(一)
- 用笔记本建立虚拟wifi
- Verdi调整字体大小
- NVR-网络视频录像机
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) 飞行棋
- 疯狂java讲义(李刚)6.2
- 物联网基于wifi定位模型
- 开源OA协同办公平台搭建教程丨服务器端命令:数据导入导出及配置
- curl采集 根据关键词 获取雅虎竞价排名