野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 388|回复: 5

OV7725串口显示图片

[复制链接]
发表于 2019-11-13 21:57:36 | 显示全部楼层 |阅读模式
我在做将OV7725的像素数据传输到上位机进行显示的时候,遇到了问题,希望得到大家的指导,下面开始讲述我遇到的问题
1 摄像头的像素格式为RGB565,所以一个像素为16位,我将一个像素数据分为高8位和低8位发送给上位机,下面是代码[mw_shl_code=c,true]void ImagDisp(uint16_t sx,uint16_t sy,uint16_t width,uint16_t height)
{
        uint16_t i, j;
        uint16_t Camera_Data;
        uint8_t Data_H, Data_L;
       
        ILI9341_OpenWindow(sx,sy,width,height);
        ILI9341_Write_Cmd ( CMD_SetPixel );       
        printf("FF11FF11FF11");
        for(i = 0; i < width; i++)
        {
                for(j = 0; j < height; j++)
                {
                        READ_FIFO_PIXEL(Camera_Data);                /* 从FIFO读出一个rgb565像素到Camera_Data变量 */
                        ILI9341_Write_Data(Camera_Data);
                        Data_L = (Camera_Data & 0xFF);
                        Data_H = ((Camera_Data >> 8) & 0xFF);
                        printf("%x", Data_H);
                        printf("%x", Data_L);
                }
        }
        printf("EE22EE22EE22");
        while(1);
}[/mw_shl_code]

2 然后是上位机处理数据的代码
[mw_shl_code=c,true]public Bitmap GetDataPicture(int w, int h,byte[] data)
        {
            //定义一个BMP格式的图片
            Bitmap pic = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format16bppRgb565);
            //定义一个像素颜色变量
            Color c;
            //定义RGB565转变为RGB888的字节数组
            byte[] rgb24 = new byte[3];
            //这是像素位置变量
            ushort j = 0;
            for (int i = 0; i < data.Length; i+=2)
            {
                //将高低8位合并为半字
                ushort RGB565_Temp = (ushort)data;
                RGB565_Temp = (ushort)((RGB565_Temp << 8) | data[i + 1]);
                //进行转换
                rgb565_2_rgb24(ref rgb24, RGB565_Temp);
                //设置像素
                c = Color.FromArgb(rgb24[2], rgb24[1], rgb24[0]);
                //将像素写进图片
                pic.SetPixel(j % w, j / w, c);
                j++;
            }

            return pic;
        }[/mw_shl_code]

其中 rgb565_2_rgb24(ref rgb24, RGB565_Temp);代码为
[mw_shl_code=c,true]private static void rgb565_2_rgb24(ref byte[] rgb24, ushort rgb565)
        {
            //uint data;
            //extract RGB   
            rgb24[2] = (byte)((rgb565 & RGB565_MASK_RED) >> 11);
            rgb24[1] = (byte)((rgb565 & RGB565_MASK_GREEN) >> 5);
            rgb24[0] = (byte)((rgb565 & RGB565_MASK_BLUE));

            //amplify the image   
            rgb24[2] <<= 3;
            rgb24[1] <<= 2;
            rgb24[0] <<= 3;

            //data = (uint)(rgb24[2] << 16 + rgb24[1] << 8 + rgb24[0]);
            //return data;
        }[/mw_shl_code]

最后结果见图片

不知道哪里出了问题,请大家帮忙看看。

最后显示结果

最后显示结果
回复

使用道具 举报

 楼主| 发表于 2019-11-15 21:29:50 | 显示全部楼层
本帖最后由 a496272917 于 2019-12-4 21:42 编辑

新的帖子请移步:http://www.firebbs.cn/thread-28499-1-1.html

显示结果

显示结果
回复 支持 反对

使用道具 举报

发表于 2019-11-14 15:22:12 | 显示全部楼层
楼主,可以给资料吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-14 17:07:04 | 显示全部楼层
Geng 发表于 2019-11-14 15:22
楼主,可以给资料吗?

我发现一些问题,在排查,等调试完后,把代码分享上来
回复 支持 反对

使用道具 举报

发表于 2019-11-14 17:31:09 | 显示全部楼层
感谢楼主
回复

使用道具 举报

发表于 2020-5-6 21:48:09 | 显示全部楼层
讚讚讚讚讚讚讚讚讚讚
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|站点地图|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 ) 大学生ARM嵌入式2群

GMT+8, 2020-8-5 00:16 , Processed in 0.154667 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表