主题 : 用V4L2为什么不能设置图片参数? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 16861
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2010-03-22
最后登录: 2010-08-01
楼主  发表于: 2010-03-28 10:22

 用V4L2为什么不能设置图片参数?


我买了个摄像头单是不知道什么芯片的,用lshal 查看显示:
usb_device.product = 'USB2.0 PC CAMERA'  (string)
  usb_device.product_id = 12944  (0x3290)  (int)
  usb_device.speed = 12.0 (12) (double)
  usb_device.speed_bcd = 4608  (0x1200)  (int)
  usb_device.vendor = 'ARKMICRO'  (string)
  usb_device.vendor_id = 6380  (0x18ec)  (int)
但是在V4L2设置图片格式为320x240的时候
memset ( &fmt, 0, sizeof(fmt) );
  fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  fmt.fmt.pix.width = 320;
  fmt.fmt.pix.height = 240;
  fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;
  if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0)
  {
    printf("set format failed\n");
}
运行的时候就显示:set format failed。没有通过。请问做过USB摄像头采集的,是不是摄像头必修要ZC30x这种芯片才行。如果不知道芯片型号就不行?谢谢。
级别: 新手上路
UID: 16789
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2010-03-21
最后登录: 2016-10-16
1楼  发表于: 2010-03-28 23:36
我也错在这里,我这个摄像头在系统自带的应用能用的,但是我自己用v4l2就会出这样的错
级别: 侠客
UID: 25655
精华: 0
发帖: 86
金钱: 440 两
威望: 88 点
综合积分: 172 分
注册时间: 2010-07-27
最后登录: 2018-12-08
2楼  发表于: 2011-04-04 17:31
这个问题应该是缺少某种压缩算法的原因造成的
“fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG”

把以上的像素格式改为 V4L2_PIX_FMT_YUYV 一般可用 只是产生出来的图像还要再次转换为RGB,再转换为JPEG