板子就买的这个了。
工程用的大佬的这个,已经支持了ov2640 https://whycan.com/t_5221.html。
请教下在linux中直接获取jpeg的方法,底层的话可以直接改驱动输出jpeg。这个底层输出jpeg我大概改的有点点输出,图片看起来有点错位。
我应用上还是按照YUYV的方式初始化摄像头的。以此来获取一帧数据。但是好像不是很好使。
最近编辑记录 vip888888 (2020-10-13 21:45:05)
离线
楼主解决了没?我有个Linux的也是接的2640的像输出jpeg保存,但是板子没有硬件编码,获取yuv的数据软件来编码非常慢。
离线
关于乱码的问题,后来用二进制查看得到的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)
离线
板子就买的这个了。
工程用的大佬的这个,已经支持了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 (2020-10-25 10:31:17)
离线
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方面的说明,我也就网上搜的然后加到初始化就行了。
离线
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方面的说明,我也就网上搜的然后加到初始化就行了。
谢谢楼主,网上搜到了寄存器代码,已经改了初始化;测试应用能发下参考下吗?还不会v4l2编程
离线
应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz
最近编辑记录 vip888888 (2020-10-26 12:42:57)
离线
应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz
谢谢楼主,我自己参考网上写的获取不到数据,不知道是程序有问题还是驱动初始化没改好,等下用你这个程序测试下
离线
应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz
可以获取jpg图片了,谢谢楼主!
离线
vip888888 说:应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz可以获取jpg图片了,谢谢楼主!
客气客气,好了就行。
离线
tianjjff 说:vip888888 说:应用获取摄像头数据参考文件如下, 下载之后另存为.c就行了(因为不支持上传后缀.c的文件所以重命名了而已)。
testApp.gz可以获取jpg图片了,谢谢楼主!
客气客气,好了就行。
Ov5640不知道可不可以。
离线
你可以自己试下,我没有这个摄像头,理论上来说应该都有方法搞定吧。
离线
文件损坏了呀,打不开~··
离线
板子就买的这个了。
工程用的大佬的这个,已经支持了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
离线
文件损坏了呀,打不开~··
这只是一个应用层的.c另存为就可以了。不是固件来的。
离线
参考了这个: https://whycan.com/t_5327.html
发现用 media-ctl --set-v4l2 '"ov2640 0-0030":0[fmt:YUYV8_2X8/640x480]' 命令可以单独设置OV2640的分辨率和图像格式,
然后再用 fswebcam -d /dev/video0 --no-banner -r 640x480 -S 10 1.jpg
就能抓到图像了,本地的jpg文件上传到开发PC就能打开了。
离线
@CATdaily
media-ctl --set-v4l2 '"ov5640 1-003c":0[fmt:YUYV8_2X8/640x480]'
LD_LIBRARY_PATH=/usr/lib/mjpg-streamer/:$LD_LIBRARY_PATH mjpg_streamer -i "input_uvc.so -y -d /dev/video0" -o "output_http.so -p 8080 -w /usr/share/mjpg-streamer/www"
然后就 OK 了。
离线
楼主,我也是使用的这个固件,编译完成下载进去识别到了摄像头,并打印了id,但是使用fswebcam -d /dev/video0 -S 3 -p UYVY test19.bmp抓取图像的时候图像是花的,这个是需要改动一下驱动嘛,我是没有做任何更改的,我看时钟线和信号线都有波形的,不知道哪里出了问题。
离线
@vip888888
您好,请教下如何修改底层驱动直接输出jpg阿,我百度了修改了后探测支持格式还是灭有看到jpg,在不修改驱动的情况下,使用v4l2命令行可以正常拍照片的,但是按照v4l2流程写代码获取图片输出yuv,用软件查看就一片绿色,麻烦指导下哈。
离线
@future
linux-5.4.99\drivers\media\i2c\ov2640.c
离线
@future
请问后续解决了吗?拍出来一片绿
离线