问题标签 [qcamera]

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 回答
588 浏览

c++ - 来自 QAbstractVideoSurface 的 QT QLabel setPixmap

我正在实现自己的类,用于在 Windows 下探测来自 QCamera 的视频帧。它是 QAbstractVideoSurface 的子类。因此,我的探针生成了我试图在 QLabel(作为取景器)上绘制的 QPixmap。而且我在 QLabel setPixmap 调用上遇到了分段错误。

我确信我的 Qpixmap 制作精良,因为我可以使用 save() 将它保存在磁盘上。我的 QLabel 已初始化并且运行良好,因为我可以从磁盘加载 QPixmap 并将其设置为 QLabel。我猜像素图的格式有问题,但不知道如何纠正它:(

我的代码

帧探测器.h

帧探针.cpp

初始化代码

和插槽

如果我将 video_forward 插槽更改为这样的东西

这行得通。当然慢:)但是工作......

PS:在 FrameProbe::present 图像中具有 QImage::Format_RGB32 格式。

0 投票
0 回答
374 浏览

qt - QT:捕获到缓冲区而不保存到文件

在我的项目中,我使用QCameraImageCapture::CaptureToBuffer. 但它也会将图像保存到文件中。由于我计划连续捕获图像,因此我想阻止它将图像保存到文件中。这是我的代码:

}

0 投票
2 回答
1329 浏览

c++ - Qt:从相机连续捕获图像会填满内存

我正在尝试连续捕获图像,以便可以使用 UDP 发送它们。我这样做是为了实现一个实时视频流程序。

下面的代码连续捕获图像并将图像分配给 QGraphicsScene,这样我就可以测试图像是否像视频一样播放。但是当我运行程序时,即使我删除了指针,我的计算机也会在几秒钟后冻结。我该如何解决这个问题?

0 投票
2 回答
3178 浏览

ffmpeg - ffmpeg avcodec_send_packet/avcodec_receive_frame 内存泄漏

我正在尝试解码帧,但内存使用量随着每一帧(更具体地说,每次调用 avcodec_send_packet)而增长,直到最后代码因 bad_alloc 而崩溃。这是基本的解码循环:

内存使用/泄漏似乎与我正在解码的视频的分辨率成比例。例如,对于 3840x2160 分辨率的视频,Windows 任务管理器中的内存使用量对于每个接收到的帧都会持续增加大约 8mb(每像素 1 个字节??)。除了调用 av_frame_unref 来释放内存之外,我还需要做些什么吗?

(更多)下面的完整代码


更新 1:(1/21/2019)在不同的机器上编译并使用不同的视频文件运行我没有看到内存使用量无限制地增长。我将尝试缩小差异所在(编译器?、ffmpeg 版本?或视频编码?)

更新 2:(2019 年 1 月 21 日)好的,看起来 ffmpeg 和 Qt 的 QCamera 之间发生了一些交互。在我的应用程序中,我使用 Qt 来管理网络摄像头,但决定使用 ffmpeg 库来处理解码/编码,因为 Qt 没有对不同编解码器的全面支持。如果我打开相机(通过 Qt),ffmpeg 解码内存消耗会无限增长。如果相机关闭,ffmpeg 表现良好。我已经尝试过使用物理相机(Logitech C920)和使用 OBS-Virtualcam 的虚拟相机,结果相同。到目前为止,我对这两个系统如何交互感到困惑......

0 投票
0 回答
217 浏览

c++ - 如何从包围体计算中排除空 QEntity

我的公司使用 Qt3D 来显示其 CAD 模型。Wee 尝试使用该函数QCamera::viewEntity(Qt3DCore::QEntity *entity)来计算给定实体的边界球,并让实体适应屏幕。

现在,我们偶然发现了一个在空QEntity节点的情况下无法解决的问题。如果它根本不包含任何顶点/点,我将把它称为空节点。在这种情况下,我预计在计算包围体时应该忽略它。相反,它似乎会被处理,因为它有一个中心为 (0.,0.,0.) 且半径为 0 的边界球。

下面的代码说明了这个问题:

主文件

我有两个半径为 0.5 的蓝色球体,彼此之间的距离为 20。我期待一个中心(20,0,0)和半径(10.5)的边界球。

相反,程序打印:

似乎值 2.14455 真的来自无处可去,而且我添加的边界体积球体有些不可预测。

意外的包围体球体

如果我用结果替换翻译QVector3D(20, 10, 0)QVector3D(0,10,0)结果会像预期的那样。

正确的包围体球体

如何从我的包围体计算中排除根实体?

0 投票
0 回答
157 浏览

c++ - 如何启动停止 QCamera?

我有上面的代码来流式传输 USB 相机。按下“开始按钮”后,相机流不会开始。当我先按停止按钮然后按启动按钮时,会显示摄像机流。

我无法理解这种行为。如何使其正常工作?

0 投票
1 回答
294 浏览

qt - 使用 QML 操作 QCamera

我正在尝试使用探针从 QCamera 获取 QVideoFrame 来处理它,同时我需要将内容显示给 QML VideoOutput。这就是我所做的:

FrameProvider 在其 getFrames 方法中从 QVideoProbe 接收帧并对其进行处理,然后将其发送到它的 present() 方法以在 QML 中显示。

在 QML 中,我只是将其显示为,

我遵循了QT 文档这个例子那个例子。我收到 getFrame 正在接收探测帧但 QML 窗口完全空白的信号。如果平台很重要,我会在 Arch Linux 上运行 KDE Plasma。我错过了什么?

0 投票
1 回答
337 浏览

python - 尝试使用 PySide2 显示网络摄像头时没有可用的取景器

我正在使用 Python3 和 PySide2 开发 Ubuntu 20.04,Qt 是第 5 版。

我编写了这个简单的 Python 脚本,以测试保存网络摄像头视频的能力,以便我稍后处理一个更大的项目。

基本上,我首先想要这个演示脚本,并简单地显示来自相机的流,在一个我命名为“frame”的小部件中,但我似乎遗漏了一些东西,因为在终端中打印了一条消息:

在没有取景器的情况下启动相机

我在 QtCreator 中制作了 GUI,然后用 pyside-uic 对其进行了转换。

我为名为“frame”的小部件应用了黑色背景色。当我单击“连接”按钮时,我希望看到视频开始并显示,但“框架”保持黑色,并且我在终端中收到有关取景器的消息。取景器不是显示视频的地方(又名小部件)吗?

我觉得有问题,但我认为它可以很容易地解决,因为当我单击按钮连接时,网络摄像头的 LED(正确)亮起。

在此处输入图像描述

这是python代码:

这是 MainWindow.py 代码

上面的代码是输出

这是mainwindow.ui的内容

0 投票
2 回答
184 浏览

c++ - 如何从 QCamera 翻转图像?

在 QT Creator 中,我们如何从相机中获取图像。我用谷歌搜索了很多,但没有找到合适的解决方案。以下是我的代码。

我在 QCamera 的构造函数参数中尝试了 QCamera::FrontFace 和 QCamera::BackFace ,如下所示

但两者没有区别。在 Python 中

将解决问题,知道如何解决这个问题..我使用的是 Windows 10

0 投票
0 回答
63 浏览

c++ - QT 小部件如何从 QCamera 获取 RGB 缓冲区

我正在将视频流媒体应用程序移植到 QT(来自 HTML),我刚刚让网络摄像头使用 QT 工作,现在我想知道如何从 QT 相机获取 RGB 视频缓冲区?我能看到的所有样本都是将图像捕获到文件中。

我使用的是 QT Widgets 而不是 QML,因为它是一个桌面应用程序。我要做的是获取相机的缓冲区图像,将其压缩并发送到网络。我想手动触发这个,因为我想在所有压缩和发送完成后调用下一帧的捕获以防止计时问题。