Ho un programma basato su Qt5.4 con un po 'di elaborazione delle immagini. Io uso QCamera
con il mio videoSurface
(derivato da QAbstractVideoSurface
) per ottenere VideoFrames. Funziona bene su Windows.Qt QML da QML a C++ QImage su Android
Ma ora ho bisogno della versione Android della mia app. Ho scoperto che QCamera
non funziona su Android. Ma vedo che l'esempio di fotocamera QML funziona su Android senza problemi.
Così ho deciso di riscrivere la mia applicazione in QML. Il problema principale: non riesco ad accedere alla superficie della fotocamera QML in C++.
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();
}
Questo codice consente di accedere alle proprietà. Ma non posso accedere a videoSurface in questo modo (usando QCamera
potrei farlo). Mi chiedo come funziona la fotocamera QML? Si basa su QCamera
? Vedo QCamera *m_camera
in QDeclarativeCamera
...
Così ho 2 domande:
- è possibile utilizzare Camera QML per le immagini di post elaborazione in C++? L'esempio di lavoro sarebbe molto prezioso.
- Conosci altri modi per acquisire video dalla videocamera Android in Qt?
uso di '' QAbstractVideoFilter' con classi QVideoFilterRunnable' grandi opere. Vorrei evidenziare il codice OpenGL che gestisce GLTextureHandle mostrato in http://code.qt.io/cgit/qt/qtmultimedia.git/tree/examples/multimedia/video/qmlvideofilter_opencl/rgbframehelper.h –
@WaldezJunior La prima soluzione non funziona su Qt5.9.1, setSource restituisce sempre false – StereoMatching