RGB565转RGB888 (C读写二进制文件)

news/2025/3/17 17:15:19/

 核心代码是RGB565转RGB888,整段代码实现的功能是读取一个RGB565的二进制文件,将其转换为RGB888,然后写成一个二进制文件。

要跑代码的去这里下载RGB565的二进制文件样例。

RGB565转RGB888的原理看这儿RGB565转RGB888原理 (MATLAB代码)_macunshi的专栏-CSDN博客_rgb888转rgb565代码

该样例是1600*1200的图片数据,所以RGB565有1600*1200*16/8/1024=3750KB,读二进制文件的时候按8位去读,共有

1600*1200*16/8=3840000个数值。

写成的RGB888有1600*1200*3*8/8/1024=5625KB,写二进制数据也按照8位去写,共有1600*1200*3*8/8=5760000个数值。

怎么看写成的RGB888数据是不是对的呢?我在给一个用MARLAB读取RGB888查看图像的代码。

在这儿:MATLAB读RGB888数据显示图片_macunshi的专栏-CSDN博客

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;#define RGB565_RED      0xf800
#define RGB565_GREEN    0x07e0
#define RGB565_BLUE     0x001f//RGB565转RGB888
void RGB565ToRGB888Char(unsigned char * rgb565,unsigned char * rgb888)
{unsigned short *n565Color  = (unsigned short *)rgb565;rgb888[0]   = (*n565Color & RGB565_RED)  >> 8;rgb888[1] = (*n565Color & RGB565_GREEN)  >> 3;rgb888[2]  = (*n565Color & RGB565_BLUE)  << 3;
}//写文件
void write(unsigned char *name, const char *path)
{FILE *fp;if ((fp = fopen(path, "wb")) == NULL){cout << "文件打开失败!" << endl;exit(0);}if (fwrite(name, sizeof(uint8_t),5760000, fp) != 5760000){cout << "写入失败!" << endl;}fclose(fp);
}//读文件
unsigned char *read(const char *path) 
{static unsigned char content[3840000];FILE *fp;if ((fp = fopen(path, "rb")) == NULL){cout << "文件打开失败!" << endl;}fseek(fp, 0L, SEEK_END);int len = ftell(fp);rewind(fp);if (fread(content, sizeof(uint8_t), 3840000, fp) != len){cout << "读取失败" << endl;}fclose(fp);return content;
}int main(){const char *path = "./ RGB_nand_240.RGB";const char *path1 = "./RGB_888_240.RGB";unsigned char *content;unsigned char *RGB888;RGB888=(unsigned char *)malloc(5760000*sizeof(unsigned char));content = read(path);for(int i=0;i<1600*1200;i++){RGB565ToRGB888Char(&content[i*2],&RGB888[i*3]);}write(RGB888, path1);return 0;
}


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

相关文章

宝峰c1对讲机写频软件_宝峰888s写频软件

宝峰888s写频软件是为宝峰888s型号的对讲机设计的免费写频软件&#xff0c;可以进行信息编辑、信道参数设置与读取和其他功能的修改&#xff0c;非常实用。小编还带来了宝峰888s写频教程&#xff0c;有需要的朋友不要错过&#xff0c;快快下载吧&#xff01; 写频软件功能 1、信…

华为MDC300F的操作记录

华为MDC300F的操作记录 之前在做MDC300F的相关工作时没有系统地记录&#xff0c;现做补充。 首先设备为MDC300f 华为MDC自动驾驶平台基于自研芯片的异构计算平台&#xff0c;CPU处理器采用ARM架构的鲲鹏920s,AI处理器采用昇腾310。 规格如下&#xff1a; 鲲鹏920s •核数&a…

RGB565 与 RGB888的相互转换

本文内容不是完全原创&#xff0c;参考了网上部分精华&#xff0c;做了整理。 RGB色彩模式&#xff08;也翻译为“红绿蓝”&#xff0c;比较少用&#xff09;是工业界的一种颜色标准&#xff0c;是通过对红(R)、绿(G)、蓝(B) 三个颜色通道的变化以及它们相互之间的叠加来得到各…

RGB888转换为RGB565原理及工具

1.原理 首先RGB的范围是0-255&#xff0c;包括RGB三个值。 第一步将R,G,B三个值分别转化为八位二进制数&#xff0c;这里以GREEN为例子。 GREEN R:0 G:255 B:0 二进制&#xff1a;R00000000 11111111 00000000 565的意思就是RGB的位数&#xff0c;R取5位&#xff0c;G取六位&…

HDMI 调试之输出RGB888

&#xff08;仅作记录&#xff0c;rk3588平台&#xff09; RGB888这种数据格式可以被csi或dsi接收&#xff0c;驱动代码里默认是被dsi接收&#xff0c;但我们经常会遇到hdmi输出rgb888到mipi csi&#xff0c;所以需要在驱动中增加对csi接口的支持。 首先了解下回调函数 v4l2_su…

白光FX-888D 温度初始化 350度

1.先关机 2.同时按 “UP” 和“ENTER” 并开机&#xff0c; 3.当面板显示"A" 时&#xff0c; 4.按下“ENTER” 就进入自我调节到350度

解决——imread.exe 中的 0x757da832 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0052f888 处的 cv::Exception。

出现上图错误提示&#xff0c;问题基本是图片路径的问题。应将程序相应的图像放置在工程目录下&#xff08;和cpp源文件同一目录下&#xff09;。

0x757da832 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0052f888 处的 cv::Exception。

opencv新手&#xff0c;没把图片放到相应的目录里面&#xff0c;读不到图片。把将被处理的图片放到与含有main函数的cpp文件相同的目录中。