【发布时间】:2015-03-18 11:14:47
【问题描述】:
我有一个基于 Qt5.4 的程序,带有一些图像处理功能。我使用QCamera 和我的videoSurface(源自QAbstractVideoSurface)来获取VideoFrames。它在 Windows 上运行良好。
但现在我需要我的应用的 Android 版本。我发现 QCamera 在 Android 上不起作用。但我看到 QML Camera 示例在 Android 上运行没有问题。
所以我决定用 QML 重写我的应用程序。 主要问题:我无法在 C++ 中访问 QML 相机表面。
void myVideoOutput::setSource(QObject *source)
{
qDebug() << Q_FUNC_INFO << source;
if (source == m_source.data())
return;
m_source = source;
if (m_source) {
const QMetaObject *metaObject = m_source.data()->metaObject();
QStringList properties;
for(int i = metaObject->propertyOffset(); i < metaObject >propertyCount(); ++i)
properties << QString::fromLatin1(metaObject->property(i).name());
qDebug() << properties;
}
.....
emit sourceChanged();
}
此代码允许访问属性。但我无法以这种方式访问 videoSurface(使用 QCamera 我可以做到)。我想知道 QML 相机是如何工作的?是基于QCamera吗?我看到QCamera *m_camera 在QDeclarativeCamera...
所以我有两个问题:
- 是否可以在 C++ 中使用 QML 相机对图像进行后处理?工作示例将非常有价值。
- 您知道在 Qt 中从 Android 摄像头捕获视频的其他方法吗?
【问题讨论】:
-
对于所有其他有类似问题的人:请参阅doc.qt.io/qt-5/qabstractvideofilter.html。希望对大家有所帮助