WhyCan Forum(哇酷开发者社区)

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2020-10-13 21:43:50

vip888888
会员
注册时间: 2020-07-16
累计积分: 84

请教大佬f1c200s在Linux下 获取ov2640的jpeg的方法

板子就买的这个了。
工程用的大佬的这个,已经支持了ov2640 https://whycan.com/t_5221.html。
TINY200.jpg

请教下在linux中直接获取jpeg的方法,底层的话可以直接改驱动输出jpeg。这个底层输出jpeg我大概改的有点点输出,图片看起来有点错位。
camera.jpg
我应用上还是按照YUYV的方式初始化摄像头的。以此来获取一帧数据。但是好像不是很好使。
camera1.png
camera2.png

最近编辑记录 vip888888 (2020-10-13 21:45:05)

离线

#2 2020-10-15 12:23:44

sprintf
会员
注册时间: 2020-09-11
累计积分: 22

Re: 请教大佬f1c200s在Linux下 获取ov2640的jpeg的方法

楼主解决了没?我有个Linux的也是接的2640的像输出jpeg保存,但是板子没有硬件编码,获取yuv的数据软件来编码非常慢。

离线

#3 2020-10-22 12:55:14

vip888888
会员
注册时间: 2020-07-16
累计积分: 84

Re: 请教大佬f1c200s在Linux下 获取ov2640的jpeg的方法

关于乱码的问题,后来用二进制查看得到的jpeg数据,发现当我用mmap的时候把width设置成640的时候可以看到是多填充了一些0数据导致数据错乱,根据ov2640输出jpeg的格式开头是0xff 0xd8 结尾是0xff 0xd9。看数据发现每次输出的循环是1280(yuyv输出每个像素2字节640*2),数据前面的1024个字节是jpeg的数据剩余的都被填充为0。所以直接导致了输出的JPEG错乱。根据此结果我摄像头初始化的时候将widht设置成512(继续用yuyv获取数据512*2=1024)。

ov2640输出jpeg的时候hync和pclk输出都不是固定的,而且一张jpeg的长度本身也不是固定,得看压缩情况,所以如果要保存一张jpeg对于程序来说并不确定是多大,所以利用jpeg结尾符号来做一次数据处理,如下图,就用此板经过测试大概计算一次15K的JPEG大概耗时3ms,写入耗时1.5ms左右(sd卡)。
ov1.png

经过修改测试,得出结论在1600x1200的情况下输出jpeg是15fps。保存存储完全没问题,在800x600的情况下测试输出jpeg的速度达到了45fps。存储速度和读取都没问题。
示波器实测800x600的vync输出速度
wave1.jpg

此速度下保存的jpeg如下,也完全ok。直接获取数据存储。
ov2.png

至此完成 linux下获取ov2640的jpeg并存储。

最近编辑记录 vip888888 (2020-10-22 13:16:33)

离线

#4 今天 10:28:05

tianjjff
会员
注册时间: 2018-12-24
累计积分: 86

Re: 请教大佬f1c200s在Linux下 获取ov2640的jpeg的方法

vip888888 说:

板子就买的这个了。
工程用的大佬的这个,已经支持了ov2640 https://whycan.com/t_5221.html。
https://whycan.com/files/members/4813/TINY200.jpg

请教下在linux中直接获取jpeg的方法,底层的话可以直接改驱动输出jpeg。这个底层输出jpeg我大概改的有点点输出,图片看起来有点错位。
https://whycan.com/files/members/4813/camera.jpg
我应用上还是按照YUYV的方式初始化摄像头的。以此来获取一帧数据。但是好像不是很好使。
https://whycan.com/files/members/4813/camera1.png
https://whycan.com/files/members/4813/camera2.png

请问楼主,改输出jpeg是怎么改的?改初始化寄存器吗?可否参考下

最近编辑记录 tianjjff (今天 10:31:17)

离线

#5 今天 21:02:09

vip888888
会员
注册时间: 2020-07-16
累计积分: 84

Re: 请教大佬f1c200s在Linux下 获取ov2640的jpeg的方法

tianjjff 说:
vip888888 说:

板子就买的这个了。
工程用的大佬的这个,已经支持了ov2640 https://whycan.com/t_5221.html。
https://whycan.com/files/members/4813/TINY200.jpg

请教下在linux中直接获取jpeg的方法,底层的话可以直接改驱动输出jpeg。这个底层输出jpeg我大概改的有点点输出,图片看起来有点错位。
https://whycan.com/files/members/4813/camera.jpg
我应用上还是按照YUYV的方式初始化摄像头的。以此来获取一帧数据。但是好像不是很好使。
https://whycan.com/files/members/4813/camera1.png
https://whycan.com/files/members/4813/camera2.png

请问楼主,改输出jpeg是怎么改的?改初始化寄存器吗?可否参考下

网上一搜就有了,2640手册没有关于jpeg方面的说明,我也就网上搜的然后加到初始化就行了。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB