qt opencv图片旋转代码示例
时间: 2024-05-27 07:07:19 浏览: 111
opencv实现图片旋转
下面是一个基于 Qt 和 OpenCV 的图片旋转代码示例:
```cpp
#include <QtWidgets/QApplication>
#include <QtWidgets/QFileDialog>
#include <QtGui/QPixmap>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 打开文件对话框,选择要旋转的图片
QString fileName = QFileDialog::getOpenFileName(nullptr, "Open Image", "", "Image Files (*.png *.jpg *.bmp)");
if (fileName.isEmpty()) {
return 0;
}
// 加载图片
Mat srcImage = imread(fileName.toStdString(), IMREAD_COLOR);
if (srcImage.empty()) {
return 0;
}
// 显示原图
namedWindow("Original Image", WINDOW_NORMAL);
imshow("Original Image", srcImage);
// 计算旋转角度,这里以45度为例
double angle = 45.0;
Point2f center(srcImage.cols / 2.0, srcImage.rows / 2.0);
Mat rotateMat = getRotationMatrix2D(center, angle, 1.0);
// 旋转图片
Mat dstImage;
warpAffine(srcImage, dstImage, rotateMat, srcImage.size());
// 显示旋转后的图片
namedWindow("Rotated Image", WINDOW_NORMAL);
imshow("Rotated Image", dstImage);
// 将旋转后的图片转换为 QPixmap,用于在 Qt 界面中显示
QPixmap pixmap = QPixmap::fromImage(QImage(dstImage.data, dstImage.cols, dstImage.rows, dstImage.step, QImage::Format_RGB888).rgbSwapped());
// 在 Qt 界面中显示旋转后的图片
QLabel label;
label.setPixmap(pixmap);
label.show();
return a.exec();
}
```
阅读全文