抓取 ov511 图像程序 在Redhat 和 Ubuntu 上运行的差异!

发布于 2022-09-18 21:11:16 字数 3940 浏览 7 评论 0

抓取 ov511 图像程序 在Redhat 和 Ubuntu 上运行的差异!

我在网上下了vidcat ,修改了一下来抓取OV511的图像(网眼 v2000),在

redhat9  2.4.20上这个运行这个程序可以抓到图像,运行没有问题。但是同样的

这个应用程序在ubuntu 2.6.22 上编译可以通过,一运行就提示:

VIDIOCMCAPTURE:Invalid argument

然后程序退出运行。出错的地方在下面这个函数中,在网上查找了相关的资料,还

是没有找到原因的所在,请大虾们指点指点吧,3Q!

  1. get_image (int dev, int width, int height, int palette ,int *size)
  2. {
  3.         struct video_mbuf vid_buf;
  4.         struct video_mmap vid_mmap;
  5.         char *map, *convmap;
  6.         int len;
  7.         int bytes = 3;
  8.         if (ioctl (dev, VIDIOCGMBUF, &vid_buf) == -1) {
  9.             perror ("VIDIOCGMBUF");               
  10.                  }
  11.         map = mmap (0, vid_buf.size,
  12. PROT_READ|PROT_WRITE,MAP_SHARED,dev,0);
  13.         if ((unsigned char *)-1 == (unsigned char *)map) {
  14.                 perror ("mmap()");
  15.                 return (NULL);
  16.         }
  17.         vid_mmap.format = palette;
  18.         vid_mmap.frame = 0;
  19.         vid_mmap.width = width;
  20.         vid_mmap.height = height;
  21.         if (ioctl (dev, VIDIOCMCAPTURE, &vid_mmap) == -1) {
  22.                 printf("debug ----- 1\n");
  23.                 perror ("VIDIOCMCAPTURE");  // *********************问题
  24. 所在******************
  25.                
  26.                 fprintf (stderr, "args: width=%d height=%d palette=%
  27. d\n",
  28.                                         vid_mmap.width, vid_mmap.height,
  29.                                                                         
  30.        vid_mmap.format);
  31.                 munmap (map, vid_buf.size);
  32.                 return (NULL);
  33.         }
  34.         if (ioctl (dev, VIDIOCSYNC, &vid_mmap.frame) == -1) {
  35.                 perror ("VIDIOCSYNC");
  36.                 munmap (map, vid_buf.size);
  37.                 return (NULL);
  38.         }
  39.         *size = vid_buf.size;
  40.        
  41.         }
  42.        
  43.         return (map);
  44.         fprintf (stderr, "got picture\n");
  45. }

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文