STM32F103ZET6+OV7670串口成功输出图像数据,但显示出问题了 『求解』

2019-07-21 01:52发布

STM32F103ZET6+OV7670串口成功输出图像数据,但显示出问题了!
具体为:我通过串口将OV7670拍摄的QVGA格式的图像(RGB565)发送到串口助手,然后以txt格式保存下来。再通过matlab将txt文件中每个像素的RGB565格式,转换为RGB格式,并显示。但结果如下图所示,请大家指点下错在哪里了呢?上面的图片为手机拍摄,下面的图像为OV7670拍摄并用matlab转换后的结果,比较可以发现图像错位并且发生了信号的反折。错位肯定不是摄像头抖动造成的,因通过多幅图像实现发现都是这样的错误显示!



 
下面为matlab,转化为正常RGB值的程序:

 

length=240;width=320;
in_name='0113.txt';%0213 1253.txt
out_name='0113.bmp';%0213
pic=uint8(zeros(length,width,3));

in=textread(in_name,'%s');
dec_data=hex2dec(in);
% dlmwrite('dec.txt',dec_data,'','');
% dec_test=dec_data(1:320);
k=1;
for i=1:length
for j=1:width
H=dec_data(k,1);
if(k+1>width*length*2)
k=k-1;
else
k=k;
end
L=dec_data(k+1,1);
k=k+2;
pic(i,j,1)=(H/8)*8;
pic(i,j,2)=(mod(H,8)*8+L/32)*4;
pic(i,j,3)=(mod(L,32))*8; 
end
end
figure,imshow(pic);
imwrite(pic,out_name);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
38条回答
745021926
1楼-- · 2019-07-21 06:19
错误的那一部分应该是有数据丢失,导致下面部分错位了....像素点不少的话问题可能是出在摄像头驱动程序部分...
正点原子
2楼-- · 2019-07-21 10:36
 精彩回答 2  元偷偷看……
ichina
3楼-- · 2019-07-21 14:28
 精彩回答 2  元偷偷看……
ichina
4楼-- · 2019-07-21 15:32
回复【2楼】745021926:
---------------------------------
摄像头的驱动,我看就是正点原子的,是把图像先存到FIFO,再输出到TFT,那版,我只是把数据由FIFO发送到TFT前,加了串口数据输出,这样不就把TFT要显示的图像,就完整输出来了吗?
745021926
5楼-- · 2019-07-21 20:17
回复【5楼】ichina:
---------------------------------
把波特率的速度调高,看会不会对图像有影响?
ichina
6楼-- · 2019-07-21 20:39
回复【6楼】745021926:
---------------------------------
我直接把波特率设的就是最高:115200

一周热门 更多>