标签: v4l2

cv2.videocapture.read()不返回numpy数组

我有这个代码试图从我的网络摄像头捕获一个框架覆盆子pi,并将其保存为图像.我使用opencv 2,但是当我运行代码时出现了奇怪的错误.

import time
import sys
from subprocess import call
import cv2

cam = cv2.VideoCapture()

while True:
        cam.open(-1)
        image = cam.read()
        cv2.imwrite("current.jpeg",image)
        time.sleep(10);
Run Code Online (Sandbox Code Playgroud)

您可以忽略ftp部分和注释行..这是程序返回的内容:

VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument

Traceback (most recent call last):
  File "kvamskogen.py", line 18, in <module>
    cv2.imwrite("current.jpeg",image)
TypeError: <unknown> is not a numpy array
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

python opencv v4l2 ftputil

7
推荐指数
1
解决办法
2万
查看次数

如何在Linux UVC Driver中启用UVC_QUIRK_FIX_BANDWIDTH怪癖?

我目前正在尝试在Wandboard主板上运行2个网络摄像头,这些主板必须共享USB集线器.问题是,当前的驱动程序实现(仅限YUV)使USB集线器饱和,最后我只能连接一个摄像头.

然而,UVC驱动实现有此怪癖样的情况,等等.

问题是,我没有找到任何关于如何加载这些怪癖的文档.你可以帮助我吗?

linux v4l2 uvc

7
推荐指数
2
解决办法
9347
查看次数

V4l2 上的 OpenCV 输出

我想知道我是否可以使用“opencv”在 v4l2 设备上写入。我会拍张照片,使用 opencv 的功能进行一些小的更改,然后将其发送到 v4l2 设备上。

我在网上搜索过,但是有很多关于如何从 V4L2 设备读取的示例,但我没有发现有关在 v4l2 上写入的内容。

有人能帮我吗?

opencv v4l2

7
推荐指数
1
解决办法
2726
查看次数

GStreamer 管道损坏

我不确定为什么这个管道会中断,我已经根据网站的确切说明在 Linux 上安装了 gstreamer,有什么想法吗?

gst-launch-1.0 v4l2src device=/dev/video0 ! videoscale ! video/x-raw, width=2592, height=600 ! autovideosink -v
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.000093207
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
Run Code Online (Sandbox Code Playgroud)

如果我把它改成:

gst-launch-1.0 v4l2src …
Run Code Online (Sandbox Code Playgroud)

linux terminal pipeline gstreamer v4l2

7
推荐指数
1
解决办法
2万
查看次数

如何写/管道到V4L2loopback模块创建的虚拟网络摄像头?

我编写了一个应用程序,它从网络摄像头读取并使用Linux上的OpenCV处理帧.现在我想将应用程序的输出传输到由V4L2loopback模块创建的虚拟网络摄像头,以便其他应用程序能够读取它.我用C编写了应用程序.我不知道如何处理这个问题.你能给我一些提示吗?

c++ linux opencv v4l2 v4l2loopback

6
推荐指数
1
解决办法
3570
查看次数

Android相机零快门延迟

在正常的快门延迟中,传感器驱动程序将捕获的图像缓冲区提供给v4l2层,这里jpeg(硬件)标头添加了一些额外的数据(exif信息和缩略图),并且该层使图像缓冲区预览堆(在HAL层中)以进行进一步处理.但是在零快门滞后的情况下拍摄照片的过程是什么.这与正常的快门滞后相同吗?如何缩短拍照和图像处理之间的时间.如果不是解释.

embedded-linux v4l2 android-camera

6
推荐指数
1
解决办法
3995
查看次数

产生dbus-launch时出错 - 这是什么?

我喜欢运行一个像这样快照凸轮的cron:

* 9-17 * * 1-5 vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/foo/tmp/cam --scene-prefix snapshot --scene-format png vlc://quit --run-time=1
Run Code Online (Sandbox Code Playgroud)

但是当cron运行它时会抛出一个我不明白的错误:

** Message:
Failed to get session bus:
Error spawning command line 'dbus-launch --autolaunch=55644972b3c91c1d24d83d8252721f00 --binary-syntax --close-stderr':
Child process exited with code 1
Run Code Online (Sandbox Code Playgroud)

在网络上,我发现没有干净或良好的文档.你能帮我解决一下吗?

linux terminal ubuntu cron v4l2

6
推荐指数
1
解决办法
1206
查看次数

带有外部触发器的 V4L2 和 Aptina 传感器 - 丢弃旧帧

我正在使用通过 LVDS 连接到 i.MX6 Quad 的 CSI 接口的 Aptina MT9V024 传感器。我在快照模式下运行传感器,即使用外部信号触发/开始图像捕获。

在软件方面,我正在运行 Yocto Linux 和一个用 C 编写的应用程序,它应该检索捕获的图像数据。

它是这样工作的(部分代码,循环运行):

// wait until camers is triggered
ret = select(video_fd + 1, &fds, NULL, NULL, &tv);

// dq buffer / read image data and save to disk
ret = xioctl(video_fd, VIDIOC_DQBUF, &v4l2buf);
img->imageData = buffers[v4l2buf.index].start;
cvSaveImage(filename, img, 0);

// enqueue another buffer to capture next frame
ret = xioctl(video_fd, VIDIOC_QBUF, &v4l2buf);
Run Code Online (Sandbox Code Playgroud)

调用select(...)阻塞直到新帧可用,即相机被触发。

我的问题:检索到的图像是上一次捕获的图像。在 init 期间,我请求两个缓冲区,因为传感器不会从更少开始。但是在 select(...) 返回后,我不能 DQBUF …

c embedded-linux v4l2 imx6

6
推荐指数
0
解决办法
384
查看次数

FFmpeg 将输出更改为特定像素格式?

我正在开发一个 openCV 项目,我有一个稳定运行的变体,它从 HDMI 采集卡获取输入并使用 FFmpeg 输出到 v4L2 环回设备 (/dev/video0) 我的 openCV 项目从 /dev/video0 获取输入.

当我尝试使用 rtsp 提要时出现问题,以下命令可将提要发送到我的环回设备:

ffmpeg -rtsp_transport tcp -i rtsp://@192.168.1.27:552//stream1 -acodec rawvideo -vcodec rawvideo -f v4l2 /dev/video0
Run Code Online (Sandbox Code Playgroud)

而且我可以使用 VLC(在 /dev/video0 上)查看该提要没问题,但是当我将其提供给我的 openCV 应用程序时,出现以下错误:

VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
Run Code Online (Sandbox Code Playgroud)

当我v4l2-ctl -d /dev/video0 --all在工作和非工作变体上运行时,这就是我得到的:

工作输出

Format Video Output:
Width/Height      : 1920/1080
Pixel Format      : 'UYVY'
Field             : None
Bytes per Line    : 3840
Size Image        : 4147200
Colorspace        : sRGB …
Run Code Online (Sandbox Code Playgroud)

opencv ffmpeg v4l2 v4l2loopback

6
推荐指数
1
解决办法
2万
查看次数

运行 v4l2-ctl 的“无效或不完整的多字节或宽字符”

使用 iTerm,我通过 SSH 连接到我的 raspberry pi (raspbian) 来控制我设置的家庭安全系统。

我需要改变相机的焦点,所以我v4l2-ctl -c focus_absolute=0在我的终端上运行。

我已经这样做了几个星期,它没有给我任何问题。今天,在运行命令时,我开始收到以下错误:

VIDIOC_S_EXT_CTRLS: failed: Invalid or incomplete multibyte or wide character
focus_absolute: Invalid or incomplete multibyte or wide character
Run Code Online (Sandbox Code Playgroud)

什么可能导致它突然抛出这个错误?我一直在运行完全相同的命令数周没有问题。

iterm v4l2 raspberry-pi

6
推荐指数
1
解决办法
927
查看次数