关于STM32 OV2640如何提取处理RGB565数据的问题

2019-07-20 12:44发布

在做一个简单的图像处理任务,用STM32F407 和OV2640进行图像处理的时候遇到一个矛盾的问题。OV2640有两种数据格式输出,如果用JPEG格式,可以直接通过串口发送到电脑上显示,但JPEG是经过压缩的,处理起来很复杂;如果用RGB565模式输出,可以进行处理,但无法发送到上位机进行显示,直观上无法感知处理的结果如何。
原子哥关于摄像头的代码输出RGB565格式时是直接通过DMA将数据从DCMI搬运到LCD上,整个过程都是由硬件模块完成的,难以介入;
而JPEG格式时是直接将一帧图像存到一个数组里,再一个个发送到串口,所以我可以在发送之前增加一个对像素点信息的判断并重赋值操作,这时遇到了几个问题:
①我是直接改动的JPEG模式下的代码,使摄像头输出变为了RGB565模式,但软件处理上沿用的依旧是JPEG模式下逐一发送到串口的模式,这时发现jpeg_data_len=jpeg_buf_size-DMA_GetCurrDataCounter(DMA2_Stream1);得出的数据长度并不是所有像素点的个数的两倍,而是12672

QQ截图20170810115005.png


②如图,这样打开传输又关闭传输的意义是什么?
QQ截图20170810115402.png

③还是上面那张图,选中的那一行的算式怎么理解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
WQL
1楼-- · 2019-07-20 14:04
然后还有一个问题,改成RGB565输出模式下输出的数据不多不少正好是所有所有像素点的信息吗?就比如说如果输出160x120的图像,每个像素点占2字节,所有总共传输量就是120x160x2=38400个字节,因此对应程序里的jpeg_data_len就是38400/4=9600吗?可我在调试的时候显示值为9608,那个多出来的32字节数据是什么呢?
1965969523
2楼-- · 2019-07-20 18:06
给你推荐个方法:ov2640配置成为RGB565模式,使用DMA将DCMI数据保存在SRAM中,然后上传至上位机,上位机做个简单串口通讯就行,把RGB565格式数据进行重新分配,就能显示图像了,不过由于数据量很大,上传时间较长些
WQL
3楼-- · 2019-07-20 22:04
 精彩回答 2  元偷偷看……
1965969523
4楼-- · 2019-07-21 00:05
WQL 发表于 2017-8-10 14:56
这个我有尝试,就像我二楼写的那样,最终上传到上位机的数据位数和我预想的输出长度并不一样。所以我先搞 ...

波特率多少?串口1 还是串口2 ?

一周热门 更多>