当前位置: 首页 > 知识库问答 >
问题:

如何通过V4L2枚举USB网络摄像头支持的所有图像大小

翟元凯
2023-03-14

我一直在开发一些视频应用程序使用USB网络摄像头和v4l2 API。该API提供了大量的ioctl()调用来枚举综合能力、视频标准、像素颜色格式等。但是没有ioctl()来列举USB网络摄像头支持的所有可能的图像大小。

这样做的首选方式是什么?

API留档表示您可以设置特定的图像大小,ioctl()将返回最接近的匹配。所以我想我可以尝试所有可能的图像大小,看看USB网络摄像头是否拒绝它。但是,当有这么多标准尺寸格式(QCIF、CIF、4CIF、16CIF、VGA、DV、SVGA、XGA、UVGA、SXGA、UXGA等)时,枚举所有可能支持的图像尺寸似乎是一种相当低效的方法。

谢谢

-安德烈斯

共有1个答案

蒯翰墨
2023-03-14

我会回答我自己的问题...

事实证明,我一直在查看v4l2上的一些非常旧的文档,其中没有任何关于图像大小的ioctl()引用。较新的文档确实有一个VIDIOC_ENUM_FRAMESIZES ioctl(),用于枚举所有支持的帧大小。

这个故事的寓意:始终为您打算使用的任何API获取最新的留档。对于video o4linux2使用这个:

http://linuxtv.org/downloads/v4l-dvb-apis/

-安德烈斯

 类似资料:
  • 我正在使用OpenCV 3.1和Python 2.7从我的网络摄像头Logitech C270捕获视频帧。我还使用video4linux2(v4l2)设置相机的属性,但这导致了一些问题。我的操作系统是Ubuntu 15.04。 我试图改变的特定属性是absolute_exposure。 我可以通过终端使用v4l2 API手动更改它,使用命令,它工作得很好,但我需要为此任务编写一个脚本。 使用Ope

  • 对于我正在进行的计算机视觉项目,我需要使用Logitech C920网络摄像头抓取图像。我使用OpenCV的视频捕获来实现这一点,但我面临的问题是,我在某个时刻拍摄的图像没有显示相机看到的最新情况。也就是说,如果我在时间戳t处拍摄一张图像,它显示了相机在时间戳(t-delta)处看到的东西,也就是说。 为此,我编写了一个程序,使计数器递增并在屏幕上显示。我把相机对准屏幕,让它录下来。当计数器达到某

  • 问题内容: 如何连续从摄像头捕获图像? 我想尝试对象识别(也许使用Java Media Framework)。 我当时正在考虑创建两个线程 一个线程: 节点1:捕获实时图像 节点2:将图片另存为“ 1.jpg” 节点3:等待5秒 节点4:重复… 其他线程: 节点1:等到捕获图像 节点2:使用“ 1.jpg”获取每个像素的颜色 节点3:将数据保存在数组中 节点4:重复… 问题答案: 此JavaCV实

  • 我正在开发一个web应用程序,它可以浏览和拍摄本地照片,我还想通过相机拍摄图像。我使用下面的代码,我可以捕捉设备摄像头。 现在,我想获得图像和onchangeevent,转换为base64,并希望在该页面中显示。 好心帮我伙计们!

  • 问题内容: 以前,我已经将可运行的网络摄像头代码放入我的应用程序中,但是现在当我更新到AngularJS v1.5.0时,它无法正常工作。我正在使用与v1.3.0完美配合的网络摄像头指令。 这是我的代码: 但是现在,AngularJS v1.5.0给出了以下错误: 我还尝试对AngularJS ng-Camera使用其他解决方案,但即使是演示页也不适用于我。 注意: 我知道问题在于我们无法从Ang

  • 我正在做一个项目,试图探测特定表面(竞技场)上的绿色和红色圆圈。当我尝试使用数字版本的竞技场(PNG图像)时,我可以成功地检测到两个彩色圆圈。 现在,我将这个竞技场打印在一个flex上(没有这两个彩色圆圈),并手动在上面放置彩色圆形硬币。但在通过1.3 MP的网络摄像头捕捉到它的图像后,颜色检测无法工作,并给出了错误的结果。 以下是通过网络摄像头拍摄的打印竞技场: 为什么没有检测到颜色?我需要对网