板子就买的这个了。
工程用的大佬的这个,已经支持了ov2640 https://whycan.com/t_5221.html。
请教下在linux中直接获取jpeg的方法,底层的话可以直接改驱动输出jpeg。这个底层输出jpeg我大概改的有点点输出,图片看起来有点错位。
我应用上还是按照YUYV的方式初始化摄像头的。以此来获取一帧数据。但是好像不是很好使。
最近编辑记录 vip888888 (2020-10-13 21:45:05)
离线
关于乱码的问题,后来用二进制查看得到的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卡)。
经过修改测试,得出结论在1600x1200的情况下输出jpeg是15fps。保存存储完全没问题,在800x600的情况下测试输出jpeg的速度达到了45fps。存储速度和读取都没问题。
示波器实测800x600的vync输出速度
此速度下保存的jpeg如下,也完全ok。直接获取数据存储。
至此完成 linux下获取ov2640的jpeg并存储。
最近编辑记录 vip888888 (2020-10-22 13:16:33)
离线
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方面的说明,我也就网上搜的然后加到初始化就行了。
离线
应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz
最近编辑记录 vip888888 (2020-10-26 12:42:57)
离线
vip888888 说:应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz可以获取jpg图片了,谢谢楼主!
客气客气,好了就行。
离线
你可以自己试下,我没有这个摄像头,理论上来说应该都有方法搞定吧。
离线
文件损坏了呀,打不开~··
这只是一个应用层的.c另存为就可以了。不是固件来的。
离线