楼主最近在做摄像头小板的开发,用到的硬件平台为:单片机+OV7725,demo工程里面配置OV7725输出图像格式为RGB565,为了判断输出图像数据是否正常,写了一个上位机软件用于将RGB565数据生成bmp图像。
步骤如下:
1、单片机端使用printf函数采用%x格式打印uint16_t的RGB565数组数据,波特率115200,将打印的数据通过串口调试助手保存为txt文件;
如图所示:
这样16进制的RGB565数据就存到txt文件中。
2、上位机软件为c文件,使用devc++编译,源码参照文末链接下载,文件名为ConvertRgb565ToBmp.c,放到windows端标准C的环境中即可编译运行。
①由于上述txt文件存的16进制数据为字符串形式,并不是严格意义上的RGB565数据文件,故上述C文件进行了文件变换,调用CangeTxtToBin函数,实现RGB565文件的生成。
② 这里我生成了txt文件,与生成bin文件一样都可用于后续转换bmp图片使用,如下图所示,notepad++打开生成的文件,选择view in hex,即可看到原16进制字符串txt转为需要的标准RGB565数据文件。
③在获得标准RGB565数据文件后,即可调用开源的处理函数,生成bmp图片。
3、上述步骤完成了RGB565到BMP图片的转换,以下是个人在调试中遇到的bug及解决方案:
①bug:生成的BMP图片左右镜像;
debug:镜像处理,串口打印输出的数据从右到左打印即可解决左右镜像翻转问题,为uint16_t的数据;
②bug:转换后的图片颜色异常,花花绿绿的;
debug:颜色处理,串口打印数据时,将单片机中采集的uint16_t数据(每个像素点)高八位与低八位互换后再打印,存到txt文件中。
上位机文件下载链接:https://download.csdn.net/download/qq_34948261/20550287