天嵌 ARM开发社区

 找回密码
 注册
查看: 8841|回复: 19

Qt4.5 网络摄像机问题

[复制链接]
lvhongwen 发表于 2010-3-24 09:26:36 | 显示全部楼层 |阅读模式
本帖最后由 lvhongwen 于 2010-3-24 09:36 编辑


1:网络摄像机问题,我用中星微zc303摄像头实现了网络摄像机问题;通过配置内核重新编译得到新内核2.6.30.4,得到了含有ov511驱动的内核,还是只能用zc303的摄像头实现网络摄像机、ov511的不好使;

用zc303:成功实现网络摄像头:

[root@EmbedSky /sbin]# uvc_stream
Using V4L2 device.....: /dev/video0
Resolution............: 640 x 480
frames per second.....: 5
TCP port..............: 8080
motor control TCP port: 8081

用ov511(已经加载内核驱动,重新编译的内核2.6.30.4)出错:
[root@EmbedSky /sbin]# uvc_stream
Using V4L2 device.....: /dev/video0
Resolution............: 640 x 480
frames per second.....: 5
TCP port..............: 8080
motor control TCP port: 8081
Error opening device /dev/video0: unable to query device.
Init v4L2 failed !! exit fatal
init_VideoIn failed
[root@EmbedSky /sbin]#

2:我做毕业设计,有一个采集程序时用v4l 接口函数编写的,在qt4.2.2的开发板上能运行起来,并且用qt显示采集到的图像,实现保存,删除一些功能。我用了qt3.3,qt4.3。3都没编译成功,最后用开发板的qt4.5-x86,qt4.5-arm都编译成功了
  @:但是在pc上执行:./sendx86 -qws,提示:

Error opening framebuffer device /dev/fb0
QScreenLinuxFb::connect: No such file or directory

   @:把用qt4.5-arm得到的sendarm 应用程序拷到开发板的/sbin目录下:执行提示:
     sendarm no found !注:开发板是2440的,内核是2.6.30.4, 256M nandflash,已经
   移植了基于qt4.5库的根文件系统
3:问题是不是因为这个基于qt的采集程序是用v4l 编写的不能用在内核2.6.30.4上?因为我看了贵公司的 uvc_strem 视频采集的源码,好像是用v4l2 编写的。如果真这样的话我是不是还得重新移植v4l 的内核版本,还是得重写我现在这个用v4l 函数写的qt 采集程序!

  救命啊亚瑟王 这个是毕业设计,疯了!
xiaoluuser 发表于 2010-3-25 16:10:33 | 显示全部楼层
为什么我用ZCXX实现时出现:
[root@EmbedSky /sbin]# uvc_stream
Using V4L2 device.....: /dev/video0
Resolution............: 640 x 480
frames per second.....: 5
TCP port..............: 8080
motor control TCP port: 8081
zc3xx: probe 2wr ov vga 0x0000  ----多了这一行。。导致我看不到视频了
 楼主| lvhongwen 发表于 2010-3-25 17:23:07 | 显示全部楼层
2# xiaoluuser


不好意思呀!我也是刚学的 这种问题没出现过 出现的是上面0v511摄像头的情况。你用其他的摄像头再试试看?
亚瑟王 发表于 2010-3-26 12:26:59 | 显示全部楼层
找不到命令那个情况,你是不是没有修改你的程序的权限啊?你编译那个程序用的是什么版本的编译器。能不能将源码提供出来?
 楼主| lvhongwen 发表于 2010-3-26 21:03:11 | 显示全部楼层
4# 亚瑟王


今天好像找到问题了,应该是因为我用3.4.5的交叉编译器编译的qt4.5-arm,导致编译出来的qt应用程序跟内核和根文件系统用的交叉编译器4.3.3不一致吧。但是新问题又来了,我用贵公司提供的脚本在4.3.3的交叉编译器下能成功编译qt4.5-arm,但是我用只用配置选项:-embedded arm 就编译出错,好像是有什么库lib 没有,这是怎么回事呀?还有我用新版本的Qt-arm去编译老的用qt-2,qt3,写的程序几乎都编译不成功,难道新的qt不能往旧的兼容,缺少了很多库函数?
亚瑟王 发表于 2010-3-27 10:31:09 | 显示全部楼层
什么意思?你编译qt4的库的时候也要用4.3.3的编译器编译啊。
 楼主| lvhongwen 发表于 2010-3-27 14:15:22 | 显示全部楼层
6# 亚瑟王


我意思是说我刚开始设置环境变量错了,用在交叉编译器3.4.5编译qt4.5-arm,导致编译出来的qt应用程序在开发板没提示:not found!后来改用4.3.3的交叉编译器编译qt4.5-arm,把再编译的qt应用程序下到板子好使了 。新问题是:我用qt4.5-arm编译以前由qt2,qt3,编写的qt程序,用qt4.5-arm交叉编译很多都编译出错,请问怎样才能解决这个问题呢?
亚瑟王 发表于 2010-3-29 12:37:32 | 显示全部楼层
qt库不一样,程序中的api也不一样,程序需要根据qt4.5的情况进行移植的。移植时,根据编译提供的错误信息一条一条的修改代码来实现。
 楼主| lvhongwen 发表于 2010-5-1 22:23:15 | 显示全部楼层
8# 亚瑟王


再请教一下:TQ2440,3.5 寸TFT ,用v4l 采集图像,用qt4.5 显示采集到的图片,我在pc机上设置图片分大小为320*240,176*144 都能在pc机上仿真,但下载到开发板怎么就是花屏呢:Invalid argument  

还有如果设置其他图片分辨率大小:比如220*176,为什么在pc上都仿真都是花屏呢?是因为摄像头不支持这种分辨率吗? 我的摄像头是zc303

问题有点多呵呵
亚瑟王 发表于 2010-5-8 20:40:51 | 显示全部楼层
你选择的分辨率不合适哦,我记得摄像头的分辨率是固定的比例的,比如:355×277等等。
 楼主| lvhongwen 发表于 2010-5-20 10:19:56 | 显示全部楼层
10# 亚瑟王


救命!还是毕设:已经用网络摄像机测试过摄像头证明驱动没问题;
图像采集:摄像头,zc301 zc303 在pc机上fedora9仿真没问题,但下到开发板花屏:提示:
v4l_grab_sync: Invalid argument
v4l_grab_frame: Invalid argument
v4l_grab_sync: Invalid argument
v4l_grab_frame: Invalid argument
v4l_grab_sync: Invalid argument

采用的是v4l 编程接口编程:v4l_grab_sync:   v4l_grab_frame  两个函数如下:

int v4l_grab_frame(v4l_device *vd, int frame)
{
         
     if (vd->frame_using[frame])
               
     {
         fprintf(stderr, "v4l_grab_frame: frame %d is already used.\n", frame);         return -1;
     }

     vd->mmap.frame = frame;
     
     if ( ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap ) ) < 0 )
          {
            perror( "v4l_grab_frame" );
            return -1;
     }
     
      vd->frame_using[frame] = 1;
      vd->frame_current = frame;
         
      return 0;
      
}

int v4l_grab_sync(v4l_device *vd)
{
    // printf("enter grab_sync\n");
     
     if (ioctl(vd->fd, VIDIOCSYNC, &(vd->frame_current)) < 0)
     {
         perror("v4l_grab_sync");
      }

      vd->frame_using[vd->frame_current] = 0;  //  printf("leave grab_sync\n");
      return 0;
}



能不能帮忙看一下呢?之前我有个同学基于mini2440 的2.16.13内核成功运行,但我的是TQ2440 内核为2.6.30.4 花屏了 很快就得答辩了 还整不出来 完了!
亚瑟王 发表于 2010-5-20 18:11:48 | 显示全部楼层
2.6.30.4中使用的usb摄像头驱动是v4l2的,不是v4l的,应该是你选用的协议出错了导致的。
天嵌科技也提供了2.6.13的内核啊。2.6.13内核中的摄像头驱动是V4L协议的。
 楼主| lvhongwen 发表于 2010-5-20 20:42:44 | 显示全部楼层
本帖最后由 lvhongwen 于 2010-5-20 20:50 编辑

12# 亚瑟王


关键是我的板子是nand_256m的! 2.6.15 没有256m的root根文件系统啊!请问怎样才行呢?2.6.30.4能配置重新编译 v4l 的吗?还有我还得用带QT4.5 库 根文件系统 做的采集界面, 愁死了!
亚瑟王 发表于 2010-5-22 20:30:04 | 显示全部楼层
OV511的摄像头使用的是V4L的协议,不是V4L2的协议。
在2.6.30.4上实现网页查看摄像头方法如下:
在天嵌科技的TQ2440配套光盘中有份教程是关于网络摄像机的,在里面讲到了mjpg-streamer的源码,在mjpg-streamer源码下有个名为www的目录,然后将该目录下的内容复制到文件系统的web目录下,修改网络摄像机教程中讲到的WebCam_USB脚本的内容,将-o "xxxxx -w 192.168.1.6:8080"的中的"192.168.1.6:8080"改为/web
然后制作文件系统镜像,烧写到开发板中,插入usb摄像头,运行WebCam_USB脚本,在PC端打开IE浏览器,输入:192.168.1.6:8080,然后就可以在网页中看到摄像头采集到的图像了。
 楼主| lvhongwen 发表于 2010-5-23 09:09:56 | 显示全部楼层
14# 亚瑟王


我想问的是:我自己做了一个基于v4l 的采集程序,显示在QT4做的 界面上,所以我需要带有v4l(内核)+qt4(根文件系统)。请问开发板提供的2.6.30.4,2.6.25.8,2.6.13 是不是只有2.6.13基于 v4l 的协议?还有2.6.13内核能支持256M 的nandflash吗?好像2.6.13的带有qt4 库的根文件系统还没有?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-30 01:49 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表