OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8602|回复: 11

请问如何才能得到sd卡里一整张图片的RGB位图数据,不需要显示到屏幕上

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
发表于 2021-9-23 11:05:08 | 显示全部楼层 |阅读模式
1金钱
请问如何才能得到sd卡里一整张图片的RGB位图数据,不需要显示到屏幕上,只要得到RGB位图数据,可以得到R、G、B三个分量值。此外还需要得到图片的宽度、高度。还要将图片二值化保存到sd卡上。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
 楼主| 发表于 2021-9-23 11:05:59 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-9-24 00:50:55 | 显示全部楼层
解码,然后不丢给LCD即可,你存储在内存也是一样。。。
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2021-9-24 09:12:26 | 显示全部楼层
啥应用啊?
若能利用电脑软件提前将图片处理为RGB数据然后存入SD卡,那就很简单了。
专治疑难杂症
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
 楼主| 发表于 2021-9-24 16:57:20 | 显示全部楼层
正点原子 发表于 2021-9-24 00:50
解码,然后不丢给LCD即可,你存储在内存也是一样。。。

TjpgDec解码得到的是一小块一小块矩形的bitmap,并且函数最终没有把bitmap返回出来,返回的只是一个解码结果(0或1),怎么才能把这些矩形块整合起来并且得到它呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-9-25 00:13:18 | 显示全部楼层
JulyMS 发表于 2021-9-24 16:57
TjpgDec解码得到的是一小块一小块矩形的bitmap,并且函数最终没有把bitmap返回出来,返回的只是一个解码 ...

我们例程是将小块放到LCD的GRAM,你只要把小块放到MCU的RAM就可以了啊。。。
然后把RAM写入SD卡。。。
当然为了方便,建议你一次写满一个横坐标,比如小块是8*8,屏幕宽度是240,那就一次存储:30个小块,内存也只需要:64*30*2字节,然后一次将这个内存写入SD卡,再解码下一个30小块,依次轮回。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
 楼主| 发表于 2021-9-26 17:14:05 | 显示全部楼层
正点原子 发表于 2021-9-25 00:13
我们例程是将小块放到LCD的GRAM,你只要把小块放到MCU的RAM就可以了啊。。。
然后把RAM写入SD卡。。。
...

存储的时候不会造成下面一行存到前面吗,比如小块是8*8,那么存储的时候是第一行前8位,后面是第二行前8位,一直到第八行前8位存储完了 才开始存储第二块,也就是第一行9~16位,第二行9~16位...这样第一行的9~16位就跑到第八行0~8位后面去了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-9-27 23:35:43 | 显示全部楼层
JulyMS 发表于 2021-9-26 17:14
存储的时候不会造成下面一行存到前面吗,比如小块是8*8,那么存储的时候是第一行前8位,后面是第二行前8 ...

你写内存的时候不会处理下么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
 楼主| 发表于 2021-10-8 21:32:24 | 显示全部楼层
正点原子 发表于 2021-9-27 23:35
你写内存的时候不会处理下么?

jpg图片怎么得到整张图片的实际宽度高度呢,解码时候只是一小块一小块显示
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
 楼主| 发表于 2021-10-9 09:58:21 | 显示全部楼层
JulyMS 发表于 2021-10-8 21:32
jpg图片怎么得到整张图片的实际宽度高度呢,解码时候只是一小块一小块显示

我通过JDEC格式的jd结构体里面的width和height得到了图片的宽高。但是解码的时候jpeg_out_func_point函数被连续不断的调用,如果在里面申请内存空间存储一个小块,还是得在函数结尾把内存释放掉吧,这样的话不就相当于白申请了,如何才能存储30个小块在内存里呢。并且可不可以不存储到sd卡,直接把所有rgb信息存到内存里面,然后在外面得到这些数据,在test文件里面调用这些数据。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-5-12
在线时间
10 小时
 楼主| 发表于 2021-10-9 23:26:45 | 显示全部楼层
为什么我像这样将rgbbuf写入sd卡里面,写进去的全是乱码

u32 jpeg_out_func_point(JDEC* jd,void* rgbbuf,JRECT* rect)
{
        u16 i,j;
        u16 *RGB;
        FIL fileobj;
        FRESULT fr;
        UINT brs;
        u16 rgbs;
        u16 realx=rect->left,realy=0;
        u16 *pencolor=rgbbuf;
        u16 *pencolors=rgbbuf;
        u16 width=rect->right-rect->left+1;                //图片的宽度
        u16 height=rect->bottom-rect->top+1;        //图片的高度
        u16 a=jd->width;
        u16 b=jd->height;
        /*printf("图片的宽度:%d\n",a);
        printf("图片的高度:%d\n",b)*/;
        //RGB=mymalloc(SRAMIN,64);
        //memcpy(RGB,rgbbuf,64*2);
        //RGB+=512;
        //printf("pencolor=%d\n",*pencolor);
        for(i=0;i<sizeof(rgbbuf);i++)
                        {
                                        printf("%d",pencolor[i]);
                        }
        fr=f_open(&fileobj,"0:/RGB.txt",FA_READ|FA_WRITE);
        if(fr==FR_OK)
        {
                       
                        f_write(&fileobj,pencolor,sizeof(pencolor),&brs);
                        //f_puts(rgbbuf,&fileobj);
       
        }
        f_close(&fileobj);
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-10-10 00:55:57 | 显示全部楼层
JulyMS 发表于 2021-10-8 21:32
jpg图片怎么得到整张图片的实际宽度高度呢,解码时候只是一小块一小块显示

有办法的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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