如何解决V4l2 找不到连接的设备 (VIDIOC_S_FMT)
我的代码似乎无法识别检测到的相机(没有 I2C)。
对于一个项目,我试图将相机与 Google Coral board 运行的 Mendel 连接起来。但是,该相机和将相机输出转换为 MIPI 的电路板之间有一个桥梁。在我的代码中,我尝试通过在此处调用 VIdioC_S_FMT 来调整 fmt 参数:
CLEAR(fmt); // set the format of the v4l2 video
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE ;
if (-1 == xioctl(fd,VIdioC_G_FMT,&fmt))
errno_exit("VIdioC_G_FMT");
printf("fmt.fmt.pix.width = %d\n",fmt.fmt.pix.width);
printf("fmt.fmt.pix.pixelformat = %d\n",fmt.fmt.pix.pixelformat);
printf("Set RGB888\r\n");
fmt.fmt.pix.width = 640; //replace
fmt.fmt.pix.height = 483; //replace
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;; //replace
fmt.fmt.pix.field = V4L2_FIELD_ANY;
printf("fmt fields adjusted\n");
printf("fmt.type = %d\n",fmt.type);
if (-1 == xioctl(fd,VIdioC_S_FMT,&fmt)){
switch (errno) {
case EAGAIN:
printf("EAGAIN\n");
break;
case EINVAL:
printf("EINVAL,fmt.type field is invalid\n");
break;
case EBADR:
printf("EBADR\n");
break;
case EBUSY:
printf("EBUSY\n");
break;
/* fall through */
}
errno_exit("VIdioC_S_FMT");
}
fmt.fmt.pix.width = 0
fmt.fmt.pix.pixelformat = 0
Set RGB888
fmt fields adjusted
fmt.type = 1
VIdioC_S_FMT error 19,No such device
因此,我认为电路板无法识别连接了摄像头的事实。如果我这样做:v4l2-ctl -d0 --list-formats-ext
我得到:
ioctl: VIdioC_ENUM_FMT
Type: Video Capture
我的想法正确吗?如果是这样,为什么板子不识别相机?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。