QT6使用QCamera旋转图像
时间: 2024-10-20 13:18:42 浏览: 48
Qt使用QCamera调用摄像头
3星 · 编辑精心推荐
在QT6中,你可以使用`QCameraImageCapture`来捕获图像,并通过`QImage`或`QImageWriter`对图片进行旋转。下面是一个基本示例,展示了如何获取图像并顺时针旋转90度:
```cpp
// 首先,确保已经包含必要的库
#include <QtMultimedia/QCamera>
#include <QtMultimediaWidgets/QCameraViewfinder>
#include <QtGui/QImage>
// 初始化相机和图像捕捉器
QCamera *camera = new QCamera;
QCameraViewfinder *viewfinder = new QCameraViewfinder(camera);
// 打开相机
if (!camera->open(QCamera::Front)) {
qCritical() << "Failed to open camera.";
return;
}
// 启动摄像头的定时器来定期捕获图像
QTimer *timer = new QTimer(this);
QObject::connect(timer, &QTimer::timeout, [this]() {
// 捕获一张图像
QCaptureImageFormat format;
format.setPixelFormat(QImage::Format_RGB888);
QCameraImageCapture *capture = new QCameraImageCapture(camera, format);
capture->start();
// 等待图像准备就绪
while (!capture->imageReady()) {
QThread::msleep(100);
}
// 获取捕获的QImage
QImage image = capture->grabImage();
// 顺时针旋转90度
QImage rotatedImage = image.rotate(90, Qt::TransformPerspective);
// 这里你可以将旋转后的图像保存、显示或者做其他处理
saveRotatedImage(rotatedImage);
});
// 开始定时器
timer->start(1000); // 每秒抓取一次
// 关闭相机和释放资源
QObject::disconnect(timer, &QTimer::timeout, this);
delete timer;
camera->stop();
delete camera;
// 保存旋转后的图像函数
void saveRotatedImage(const QImage &image) {
QPixmap pixmap(image);
pixmap.save("rotated_image.jpg");
}
```
阅读全文