Чтобы получить изображение предварительного просмотра на C ++, вы должны передать свойство mediaObject элемента QML Camera на C ++. Вы можете увидеть этот код в приложении-камере в качестве примера.
Вы можете попытаться использовать mediaObject с этим mediaObject. Но я не уверен, что это сработает. Но у него есть сигнал imageCaptured, который вам понадобится. Это имеет QImage с предварительным просмотром.
void AdvancedCamera::setCamera(QObject *cameraObject)
{
QVariant cameraVariant = cameraObject->property("mediaObject");
QCamera *camera = qvariant_cast(cameraVariant);
QCameraImageCapture *imageCapture = new QCameraImageCapture(camera);
QObject::connect(imageCapture, SIGNAL(imageCaptured(int, const QImage&))
myObject, SLOT(processPreview(int, const QImage&)));
}
Если это не сработает, вот еще один способ, используя QImage из , что код в камере -app :
void AdvancedCamera::setCamera(QObject *cameraObject)
{
QVariant cameraVariant = cameraObject->property("mediaObject");
QCamera *camera = qvariant_cast(cameraVariant);
QMediaService *service = camera->service();
QMediaControl *control = service->requestControl(QCameraImageCaptureControl_iid);
QCameraImageCaptureControl *captureControl = qobject_cast(control);
QObject::connect(captureControl, SIGNAL(imageCaptured(int, const QImage&))
myObject, SLOT(processPreview(int, const QImage&)));
}
Для лучшего примера вы должны посмотреть код камеры-приложения.
Для получения окончательного изображения, поставленного как camera-app в C ++, вам нужно будет установить captureDestination. Но это еще не все (поддерживается?), Поддерживаемое камерой с телефонами Ubuntu.