问题标签 [v4l2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3782 浏览

linux - 获取 v4l2 视频设备的最大分辨率

我如何才能检测到连接的视频设备能够提供的最大分辨率?

我不想捕获任何东西,只需从 v4l2 中检索此信息。

谢谢!

0 投票
3 回答
9577 浏览

opencv - OpenCV 是否支持 v4l2?

我正在使用 OpenCV 编写 Python 程序,但无法从 v4l2 相机捕获图像。

我尝试了 PS2 EyeToy 和 Droidcam(Android 虚拟网络摄像头),它们都使用 v4l2,但它们都不起作用:cv.CaptureFromCAM(0) 只返回 None。

我可以在其他程序中使用这两个网络摄像头(尝试过 VLC 和 Kamerka)。

我猜 OpenCV 只支持 v4l,不支持 v4l2。

我怎么解决这个问题?是否存在 v4l2->v4l 转换器?

编辑:我读到 cv.CaptureFromFile 使用 ffmpeg 解码视频文件。是否可以手动指定格式,以便我可以使用 ffmpeg 的video4linux2demuxer?

0 投票
1 回答
630 浏览

kernel - v4l2 多设备麻烦

我使用 v4l2 打开两个网络摄像头。30 fps 一切正常。以 60 fps,开始麻烦。第一个凸轮上的 FPS 大约 20,第二个凸轮上的 FPS 大约 0-3。我尝试在不同的线程(和不同的处理器内核)中运行——同样的问题。我认为 v4l2 驱动程序有问题。

我的任务非常简单 - 从一台计算机上的两个网络摄像头以 60 fps 的速度捕获数据。可能吗?可能是什么问题?我可能会显示代码,但它很大。

对不起我的英语不好。

0 投票
5 回答
44953 浏览

h.264 - 使用 Gstreamer 从摄像头捕获 h.264 流

/dev/video0我正在尝试使用element从本地安装的 Logitech C920 摄像头捕获 H264 流Gstreamer 1.0 v4l2src

v4l2-ctl --list-formats表明相机能够提供 H264 视频格式:

但管道

# gst-launch-1.0 -vvv v4l2src device=/dev/video0 ! video/x-h264, width=800, height=448, framerate=30/1 ! fakesink

一直给我not-negotiated (-4)错误:

任何帮助!

0 投票
2 回答
8440 浏览

linux - V4L2_PIX_FMT_YUYV:从 YUYV 转换为 RGB24?

我正在使用 Video4Linux2 从网络摄像头捕获图像数据。设备返回的像素格式为 V4L2_PIX_FMT_YUYV。根据http://linuxtv.org/downloads/v4l-dvb-apis/V4L2-PIX-FMT-YUYV.html这与 YUV422 相同,所以我根据http://的描述使用了 YUV422 到 RGB24 的转换paulbourke.net/dataformats/yuv/

令人惊讶的是,结果是一张奇怪的紫色/绿色图片。所以看起来 YUYV 与 YUV422 不同(并且还存在像素格式 V4L2_PIX_FMT_YUV422P 是/不一样的?)。

所以我现在完全糊涂了:如何将 V4L2_PIX_FMT_YUYV 位图转换为真正的 RGB24?有没有例子?

0 投票
0 回答
739 浏览

c++ - V4L2:获取设备/输入状态

也许有人会知道下一个问题的答案......

我已插入 USB 数码相机(它有一个输入引脚 - 0)。

我通过结构每 5 秒检查一次输入状态:v4l2_input(这里是示例:http ://pastebin.com/FFvNAkQ3 ),如果设置了其中一个标志(V4L2_IN_ST_NO_POWER 或 V4L2_IN_ST_NO_SIGNAL 或 V4L2_IN_ST_NO_H_LOCK)来处理情况。

问题是即使我拔下我的 USB 数码相机,输入状态始终为 0 (0x00)。为什么拔出设备时驱动程序不更改输入状态标志?

也许不仅可以检查输入引脚的设备状态吗?如果是,那么应该设置哪个 ioctl 请求...?

0 投票
1 回答
475 浏览

c++ - 对V4L2的误解

我在 C++ 程序中的缓冲区大小有一个小问题。我使用 V4L2 从相机中获取 YUYV 图像(此处提供示例)

我想拍摄一张图像并将其放入我自己的图像结构中。这是V4L2结构给出的缓冲区及其大小

在我的结构中,我创建了一个大小为 width*height*bitSize 的新缓冲区(mybuffer)(字节大小为 4,因为我抓取了 YUYV 或 YUV422 图像)。

问题是我希望缓冲区buf与我创建的缓冲区大小相同。但情况并非如此,例如当我抓取一个 640*480 的图像 buf=614400 和 mybuffer=1228800(两倍大)时。

有谁知道为什么会这样?

0 投票
4 回答
26532 浏览

opencv - OpenCV:无法设置视频捕获的分辨率

我在 Ubuntu 12.04 64 位上使用 OpenCV 2.4.5。我希望能够设置来自我的 Logitech C310 网络摄像头的输入分辨率。相机在 30fps 时最高支持 1280x960,我可以在 guvcview 中以这种分辨率观看视频。但是 OpenCV 总是只能获得 640x480 的视频。

在创建 VideoCapture 上限后立即尝试使用 cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280) 和 cap.set(CV_CAP_PROP_FRAME_HEIGHT, 960) 更改分辨率无效;尝试在获取每一帧之前立即设置它们会导致程序立即崩溃。我也不能用这种方法降低分辨率。我也收到错误“HIGHGUI ERROR:V4L/V4L2:VIDIOC_S_CROP”。我认为这可能是相关的,因为它在创建 VideoCapture 时出现一次,并且在我尝试设置宽度和高度时出现一次(但奇怪的是,如果我尝试仅设置其中一个,则不会出现)。

我知道我不是第一个遇到这个问题的人,但是在对 SO 和互联网上的其他地方进行了多次谷歌搜索和搜索之后,我还没有找到解决方案(在我已经尝试过的许多事情中,答案是这个 StackOverflow 问题:增加 OpenCV 中的相机捕获分辨率)。这是 OpenCV 中的错误吗?如果是这样,这是一个相当耀眼的。

这是一个展示问题的代码示例(只是 OpenCV 视频显示代码的修改版本):

事实上,如上所述,这让我得到两个“HIGHGUI ERROR”,我得到一个 640x480 的输出。我知道 160x120 是我的相机在运行时支持的分辨率v4l2-ctl --list-formats-ext。如果我取消注释 while 循环中的两条注释掉的行,程序会立即崩溃。

这些可能是相关的或有可能的解决方案:http ://answers.opencv.org/question/11427/decreating-capture-resolution-of-webcam/,http : //answers.opencv.org/question/30062/error-设置视频捕获设备的分辨率/

0 投票
1 回答
2548 浏览

c - 从opencv中的两个网络摄像头流式传输错误

我正在尝试通过同时读取两个 USB 网络摄像头来制作便宜的立体相机。我的代码:

我得到以下输出。

我的相机都是罗技 c210,我在 Ubuntu 12.10 上。当我尝试仅从一台摄像机进行流式传输时,我能够看到来自每台摄像机的提要。一台摄像机是 cvCaptureFromCAM(1),另一台是 cvCaptureFromCAM(2),但不能同时工作。我尝试编译最新的 v4l,我相信这是相机的用途。依然没有。

编辑:

结果我的 USB 总线仅支持 900 MB/s,而每台相机在默认分辨率 640x480 下的速度为 480 MB/s。我使用 v4l2-ctl 程序在执行程序之前更改了默认分辨率,它在较低的分辨率下工作。

0 投票
2 回答
3912 浏览

c - 从 V4L2 API 将 YUY2 转换为 RGB24

我正在尝试使用 V4L2 API 来捕获图像并将图像放入 opencv Mat 中。问题是我的网络摄像头只在 YUYV (YUY2) 中捕获,所以我需要先转换为 RGB24。这是我正在使用的完整 V4L2代码。

我能够让图片中的物体变得可识别,但它都是粉红色和绿色的,而且它被水平拉伸和扭曲。我尝试了许多不同的转换公式,并且得到了相同的基本粉色/绿色失真图像。这张图片使用的公式来自http://paulbourke.net/dataformats/yuv/。我正在使用 linux 上的 shotwell 照片查看器来查看 .raw 图像。我无法打开它。我对如何保存图像格式不是很了解,但我假设必须有某种标题,但 shotwell 照片查看器似乎可以工作。这可能是图像不正确的原因吗?

我不确定 V4l2 是否返回 p 指向的有符号或无符号字节图像。但如果这是问题,我的图像不会只是颜色变差吗?但似乎几何图形也被扭曲了。我相信我正确地处理了浮点数的转换。

有人可以帮我理解吗

  1. 如何找出 *void p 变量中包含的基础类型
  2. 从 YUYV 转换为 RGB24 的正确公式,包括使用哪种类型的说明
  3. 保存没有格式(标题)的图像并使用 Shotwell 查看会是问题吗?
  4. 有没有一种简单的方法可以正确保存 RGB24 图像。
  5. 一般调试提示

谢谢