У меня есть программа на основе Qt5.4 с некоторой обработкой изображений. Я использую QCamera
с моим videoSurface
(полученным из QAbstractVideoSurface
), чтобы получить VideoFrames. Он отлично работает в Windows.
Но теперь мне нужна версия Android для Android. Я узнал, что QCamera
не работает на Android. Но я вижу, что пример камеры QML работает на Android без проблем.
Итак, я решил переписать свое приложение в QML. Основная проблема: я не могу получить доступ к поверхности 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();
}
Этот код предоставляет доступ к свойствам. Но я не могу получить доступ к видеоповерхности таким образом (используя QCamera
, я мог бы это сделать). Интересно, как работает камера QML? Основано ли оно на QCamera
? Я вижу QCamera *m_camera
в QDeclarativeCamera
...
У меня есть 2 вопроса:
- Можно ли использовать QML-камеру для изображений постпроцесса в С++? Рабочий пример был бы очень ценным.
- Знаете ли вы другие способы захвата видео с камеры Android в Qt?