QT6旋转QVideoWidget中的QCamera视频
时间: 2024-12-08 12:21:11 浏览: 88
在Qt 6中,如果你想在`QVideoWidget`中展示从`QCamera`获取的视频流并进行旋转,你需要利用`QGraphicsView`和`QGraphicsScene`的灵活性。`QVideoWidget`本身并不提供直接的旋转功能,但它可以显示来自`QMediaContent`,包括`QCameraImageCapture`的实时图像。
首先,创建一个`QGraphicsScene`,并在其中添加一个`QGraphicsView`,这将是显示视频的地方:
```cpp
QGraphicsScene scene;
QGraphicsView* graphicsView = new QGraphicsView(&scene);
videoWidget->setScene(&scene);
```
接着,处理`QCamera`的信号,获取到新的帧时,先在内存中应用旋转操作,然后再传递给`QVideoSurfaceFormat`,这样`QVideoWidget`就能展示旋转后的视频:
```cpp
void cameraCaptureFrameReady(const QMediaObject::ReadyReadError& error, const QImage& frame) {
if (error == QMediaObject::NoError) {
QPixmap pixmap = QPixmap::fromImage(frame);
pixmap = pixmap.transformed(QTransform::rotate(angle)); // angle是你想要的旋转度数
QSurfaceFormat format = videoWidget->format();
format.setWidth(pixmap.width());
format.setHeight(pixmap.height());
videoWidget->setFormat(format);
videoWidget->setSurface(pixmap);
}
}
```
别忘了连接`QCameraImageCapture`的`frameReady`信号到上述函数:
```cpp
cameraCapture_->imageCaptured.connect(cameraCaptureFrameReady);
```
阅读全文
相关推荐


















