Qt里面如何让图片翻转
时间: 2023-07-10 16:25:23 浏览: 88
如果你想在 Qt 中翻转图片,可以使用 `QPixmap` 类的 `transformed` 方法。下面是一个示例代码:
```cpp
QPixmap pixmap(":/images/image.png"); // 加载图像
QPixmap flippedPixmap = pixmap.transformed(QTransform().scale(-1, 1)); // 水平翻转图像
QPainter painter(this);
painter.drawPixmap(0, 0, flippedPixmap); // 在 (0, 0) 处绘制翻转后的图像
```
在这个示例中,我们使用 `QTransform` 类创建一个变换矩阵,使用 `scale` 方法对图像进行水平翻转,然后使用 `transformed` 方法创建一个翻转后的图像副本。然后,使用 `drawPixmap` 方法在指定的位置绘制翻转后的图像。
如果你想进行垂直翻转,可以使用 `scale` 方法的第二个参数设置为 `-1`:
```cpp
QPixmap flippedPixmap = pixmap.transformed(QTransform().scale(1, -1)); // 垂直翻转图像
```
相关问题
让qt里面的输入框旋转90度的代码
可以通过QTransform类来实现Qt输入框旋转90度的效果。以下是一个简单的示例代码:
```cpp
// 创建一个QLineEdit对象
QLineEdit *lineEdit = new QLineEdit(this);
// 创建一个QTransform对象,并将其旋转90度
QTransform transform;
transform.rotate(90);
// 设置lineEdit的Transform属性
lineEdit->setTransform(transform);
```
需要注意的是,Qt输入框旋转后可能会影响其布局和大小,需要根据实际情况进行调整。
qt 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();
}
```
阅读全文