使用QSlider()实现图像亮度调节功能
发布时间:2024-01-12 11:19:09
QSlider是Qt的一个调节控件,可以用于实现图像亮度的调节功能。下面是一个使用QSlider实现图像亮度调节的例子:
首先,创建一个Qt应用程序,并添加一个QLabel用于显示图像,一个QSlider用于调节亮度,以及相关的布局和控件连接代码。在这个例子中,我们使用OpenCV库加载和处理图像。首先,我们需要在.pro文件中添加OpenCV库的链接。
# .pro文件
QT += widgets
LIBS += -lopencv_core -lopencv_highgui -lopencv_imgproc
HEADERS += \
mainwindow.h
SOURCES += \
main.cpp \
mainwindow.cpp
RESOURCES += \
resources.qrc
...
接下来,需要创建一个MainWindow类,并实现亮度调节的功能:
mainwindow.h 文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <opencv2/opencv.hpp>
#include <QMainWindow>
#include <QSlider>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void setBrightness(int value);
private:
cv::Mat image;
cv::Mat processedImage;
QLabel* imageLabel;
QSlider* brightnessSlider;
void loadImage();
void updateImage();
};
#endif // MAINWINDOW_H
mainwindow.cpp 文件
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
loadImage();
imageLabel = new QLabel(this);
imageLabel->setPixmap(QPixmap::fromImage(QImage(image.data, image.cols, image.rows, QImage::Format_RGB888)));
setCentralWidget(imageLabel);
brightnessSlider = new QSlider(Qt::Horizontal, this);
brightnessSlider->setRange(-100, 100);
brightnessSlider->setValue(0);
brightnessSlider->setTickPosition(QSlider::TicksBelow);
connect(brightnessSlider, &QSlider::valueChanged, this, &MainWindow::setBrightness);
statusBar()->addPermanentWidget(brightnessSlider);
}
MainWindow::~MainWindow()
{
}
void MainWindow::loadImage()
{
cv::Mat tempImage = cv::imread("image.jpg");
cv::cvtColor(tempImage, image, cv::COLOR_BGR2RGB);
}
void MainWindow::updateImage()
{
cv::Mat tempImage;
cv::cvtColor(processedImage, tempImage, cv::COLOR_BGR2RGB);
imageLabel->setPixmap(QPixmap::fromImage(QImage(tempImage.data, tempImage.cols, tempImage.rows,
QImage::Format_RGB888)));
}
void MainWindow::setBrightness(int value)
{
image.convertTo(processedImage, -1, 1, value);
updateImage();
}
在上述代码中,loadImage函数用于加载图像,并使用cv::cvtColor函数将图像从BGR格式转换为RGB格式,以适应QImage的格式。updateImage函数用于更新图像显示,并使用cv::cvtColor函数将处理后的图像从BGR格式转换为RGB格式。setBrightness函数用于将图像亮度调整为指定的值,并根据调整后的图像更新图像显示。
编译和运行上述代码后,会出现一个GUI窗口,其中包含一个显示加载的图像的标签和一个滑块。通过移动滑块,可以调整图像的亮度。根据滑块的值,调用setBrightness函数来调整图像的亮度,并使用updateImage函数更新图像显示。
尝试编译和运行上述代码,并通过调节滑块来调整图像的亮度。您可以将图像替换为自己的图像,并对代码进行适当的修改来满足您的需求。这只是一个简单的例子,您可以根据自己的需求来进行更复杂的图像处理操作。
