如何在QML QVideoFilterRunnable中访问摄像头?

时间:2016-01-27 19:13:41

标签: qt qml

https://blog.qt.io/blog/2015/03/20/introducing-video-filters-in-qt-multimedia的博客之后,我设法让我的C ++过滤器与QML定义的相机一起使用。我遇到的问题是我的过滤器收到的图像不考虑我的屏幕方向。 Qt文档http://doc.qt.io/qt-5/cameraoverview.html显示了如何根据相机和屏幕方向旋转图像。不清楚的是如何从过滤器获取相机实例。以下是我的QML文件中的相关代码段:

Camera {
    id: camera
    captureMode: Camera.CaptureStillImage
    ...
}

MyFilter {
    id: filter
}

VideoOutput {
    id: viewfinder
    source: camera
    filters: [ filter ]
    ...
}

如何从QVideoFilterRunnable实例访问QCamera实例?问候。

1 个答案:

答案 0 :(得分:0)

回答关于轮换的具体问题,我的最佳答案是将VideoOutput组件的方向传递给您的自定义组件,即

Camera {
    id: camera
    captureMode: Camera.CaptureStillImage
    ...
}

MyFilter {
    id: filter
    orientation: videofinder.orientation
}

VideoOutput {
    id: viewfinder
    source: camera
    autoOrientation: true
    filters: [ filter ]
    ...
}

这样,您的自定义过滤器就会知道最终用户如何看到您的图片。另一个问题是在某些设备上图像也被翻转:

#ifdef Q_OS_ANDROID
bool flip = true;
#else
bool flip = surfaceFormat.scanLineDirection() == QVideoSurfaceFormat::BottomToTop;
#endif