我的编程空间,编程开发者的网络收藏夹
学习永远不晚

OV511视频采集设计文档(3)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

OV511视频采集设计文档(3)

6.       采集到的数据不能显示;
原因:关键是没有设置vd->picture.palette,将其设置为与vd->mmap.format相同值即可。如果设置的是YUV420格式,则数据可以用YUVviewer播放,如果数据格式设为RGB24则还需加上BMP头后数据才能显示为图像。
       其中RGB24图像格式为:每个像素点包含RGB三个分量,且三分量交替排列,即(RGB);(RGB);(RGB);……这样交替出现,如果不加BMP头图像大小就为width*height*3.
       YUV格式又分为很多种,各种格式的YUV分量的比例以及排列顺序不一样,比如UYUV就是[u,y,v,y][u,y,v,y]交替排列,比例为YUV=422,图像大小就为width*height*2.
yuv420则不一样,首先是比例,每行都只有U分量或者V分量,YUV=420402
其次排列形式也不一样,YUV420三分量不是交替排列,而是各自分块排列,所有y分量之后才是u分量,最后是v分量。
 
如一幅4*4的图片其像素排列为:
y     y     y     y
y     y     y     y
y     y     y     y
y     y     y     y
 
u     u
u     u
 
v     v
v     v
图片大小为width*height*1.5.
 
7.       可以成功采集到连续的视频了,但是存在的对连续视频的帧采集速度太慢,加入时
间函数测了一下,每秒只能采集一到两帧,且主要是将数据写入文件部分耗时太多,
原因:写入文件的目录为“/temp.YUV”,这个目录还是在PC机上,写入时还是要通过网线传到电脑上,将目录改为“/tmp/temp.YUV”就可以大为缩短时间,“/tmp”目录是在板子上的本地目录,这可以在PC上打开/home/nfs/tmp和在板子上打开/tmp查看内容发现内容不同来验证。
 
xiyong8260的补充:
2008-5-29
1、编译内核,使用make menuconfig加上ov511(在usb选项中)的和vedio for linux驱动,
编译的时候错误,报告videodev.h文件不能找到version.h文件,后来修改/usr/local/arm/…. videodev.h文件,删除包含version.h,就好了。
 
2、启动内核,会打印下面的信息:
hub.c: new USB device usb-ohci-1, assigned address 2
ov511.c: USB OV511+ video device found
ov511.c: model: Unknown
ov511.c: Camera type (108) not recognized
ov511.c: Please notify mark@alpha.dyndns.org of the name,
ov511.c: manufacturer, model, and this number of your camera.
ov511.c: Also include the output of the detection process.
ov511.c: Sensor is an OV7620
Looking up port of RPC 100005/1 on 192.168.10.135
ov511.c: Device registered on minor 0
说明检测到了OV511的设备,但是model不认识,查看源代码,camlist中不包含108的设备号;
 
3、编写了一个测试程序,打开/dev/video0设备
建立设备号 /dev/videio0 c 81 0,测试结果不能打开设备,怀疑是没有这个设备,
查看源代码,发现是driver/meida/video/videodev.c文件处理的video0设备,
进一步发现,没有运行videodev_init程序,
以前的代码是通过MODULE的方式运行的,
#ifdef MODULE            
int init_module(void)
{
   return videodev_init();
}
现在修改为
module_init(videodev_init);
module_exit(videodev_exit);
但是发现还是没有运行,又发现需要在函数前增加_init的标记才能运行
static int __init
videodev_init(void)
现在能够运行了,在启动信息中可以发现如下的信息:
Video for Linux One (2.2.16). Major device: 81
Video for Linux Two (V0.20). Major device: 81
使用cat /proc/devices可以看到设备名字:81 v4l1/2
[root@192 /]# cat /proc/devices
Character devices:
  1 mem
  2 pty/m%d
  3 pty/s%d
  4 vc/0
  5 ptmx
  7 vcs
 10 misc
 13 input
 29 fb
 81 v4l1/2
 89 i2c
 90 mtd
128 ptm
136 pts/%d
162 raw
180 usb
204 ttyS%d
205 cua%d
254 s3c2440-ts
Block devices:
  1 ramdisk
  7 loop
 31 mtdblock
同时在dev目录下自动建立了下面的节点:
/dev/v4l/video
 
2008-5-31
1、今天尝试着编译了webcam-server-0.50
使用2.95.3编译器,显示不能找到jpeg库,重新编译了jpeg库,还是有些问题,干脆直接使用3.3.2的编译器;
./configure –prefix=/usr/local/arm/3.3.2/ -class="lazy" data-srcdir=/home/xiyong/vedio/webcam_server-0.50
然后修改Makefile class="lazy" data-src/Makefile
cc=/usr/local/arm/3.3.2/bin
报错:没有找到fd,
修改:webcam_server.c的那几个struct定义到main开头即可
 
直接make,会在class="lazy" data-src/目录下生成webcam_server文件,拷贝到/home/nfs目录下
建立节点:/dev/video0 c 81 0
运行 ./webcam_server目录
在计算机的IE浏览器中输入 http://192.168.10.199:8888可以看到采集到的图像
点击刷新,图片会不断刷新。
 
 
五.     存在的问题和拟采取的解决方案
改变输出文件目录以后采集速度可以达到每秒45帧,但是一般的视频播放都要求每秒15帧以上,所以相对说来采集速度还是太慢,暂时还没有好的解决方案。
六.     作者简介
xx:1984720日生,重庆市人。07级硕士研究生,研究方向为:嵌入式与通信网络。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

OV511视频采集设计文档(3)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

OV511视频采集设计文档(3)

6.       采集到的数据不能显示;原因:关键是没有设置vd->picture.palette,将其设置为与vd->mmap.format相同值即可。如果设置的是YUV420格式,则数据可以用YUVviewer播放,如果数据格式设为RG
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录