问题 用Qt显示WebCam视频


我在Linux Gnome(Ubuntu 9.04)上使用Qt 4.5(2009.03),并希望在我的Qt应用程序的Phonon :: VideoWidget中显示我的网络摄像头捕获的视频。

我有一个使用v4l2 API的第一个实现,我在那里进行YUV2到RGB转换并填充我自己的QImage。它运作良好,但效率不高。一位同事使用gStreamer做同样的事情,而且速度要快得多。

从那时起,我发现了声子,并想使用它。除了绑定到网络摄像头设备作为源之外,所有内容都已配置和设置。

我应该创建一个MediaSource对象,但我不知道如何配置它。任何帮助都将非常有价值。

编辑: 声子概述 解释说它还不支持。但我需要一个解决方案。


4143
2017-09-04 11:35


起源

我希望我能做同样的事情,但是在Windows,Linux和MacOS X上使用跨平台应用程序 - Natim
我现在有一个工作版本,但它只使用视频linux(v4l)。 opencv可以直接插入Qt,但图像分辨率固定为较低的值,而且在Windows上非常低。更改分辨率参数无效。我的linux版本没有这个限制。我从yuv转换,将图像倾斜90°并立即复制到QImage缓冲区。使用800x600 @ 5fps cpu使用率非常低。 - chmike
你有一些代码可以告诉我吗?我需要为一个项目做同样的事情。 - Natim
+2。好问题!我正在寻找一种方法让Qt显示由网络摄像头捕获的视频序列。你会在公共许可下发布吗?谢谢! - Viet


答案:


我知道这个问题有点晚了。但我一直在寻找相同的东西,找不到纯粹的qt解决方案。 我发现 http://qt-apps.org/content/show.php/Qt+Opencv+webcam+viewer?content=89995 这取决于我不知道的opencv,我不想学习。

这是我的解决方案 http://qt-apps.org/content/show.php/V4lCapture?content=126541 

有一点需要对它的线程进行更多的抛光,但无论如何它都可以工作。


5
2018-06-25 04:32





如果您的目标是在屏幕上显示YUV图像,则可以使用OpenGL模块。将转换实现为片段着色器。如果你想做其他事情,比如将转换后的图像保存到文件中,那么这不是一个好主意。

一些链接:


4
2017-09-04 13:01





也许你可以看一看 kapture 实施了。


2
2017-09-04 12:38



我查了但是无法初始化网络摄像头。我用v4l2编写的代码可以直接使用。我看到他也用手转换图像,这不好。 - chmike