[TASK] Add button to convert to monochrome.
This commit is contained in:
parent
2467bade73
commit
c2421582b5
@ -73,6 +73,31 @@ void ImageViewer::initializeImage() {
|
|||||||
analyzeImage();
|
analyzeImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In case it is needed, convert the loaded image into grayscale.
|
||||||
|
* @brief ImageViewer::convertToMonochrome
|
||||||
|
*/
|
||||||
|
void ImageViewer::convertToMonochrome() {
|
||||||
|
if(image!=NULL) {
|
||||||
|
logFile << "Converting image to monochrome...";
|
||||||
|
renewLogging();
|
||||||
|
for(int x=0; x<image->width(); x++) {
|
||||||
|
for(int y=0; y<image->height(); y++) {
|
||||||
|
int r,g,b;
|
||||||
|
QColor color = QColor::fromRgb(image->pixel(x, y));
|
||||||
|
color.getRgb(&r,&g,&b);
|
||||||
|
int intensity = (int)(0.299*r+0.587*g+0.114*b);
|
||||||
|
color = QColor::fromRgb(intensity, intensity, intensity);
|
||||||
|
image->setPixel(x, y, color.rgba());
|
||||||
|
original_image->setPixel(x, y, color.rgba());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateImageDisplay();
|
||||||
|
logFile << "done." << std::endl;
|
||||||
|
renewLogging();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a simple, black line.
|
* Draws a simple, black line.
|
||||||
@ -195,7 +220,7 @@ void ImageViewer::analyzeImage() {
|
|||||||
renewLogging();
|
renewLogging();
|
||||||
|
|
||||||
QString result = QString("Intensity: Average: %1, Variance: %2").arg(getAverageIntensity()).arg(getIntensityVariance());
|
QString result = QString("Intensity: Average: %1, Variance: %2").arg(getAverageIntensity()).arg(getIntensityVariance());
|
||||||
task_tab2_stats->setText(result);
|
stats->setText(result);
|
||||||
|
|
||||||
updateHistogramm();
|
updateHistogramm();
|
||||||
}
|
}
|
||||||
@ -324,21 +349,25 @@ void ImageViewer::generateControlPanels() {
|
|||||||
task_tab1 = new QVBoxLayout();
|
task_tab1 = new QVBoxLayout();
|
||||||
task_tab_widget1->setLayout(task_tab1);
|
task_tab_widget1->setLayout(task_tab1);
|
||||||
|
|
||||||
task_tab1_button1 = new QPushButton();
|
monochrome = new QPushButton();
|
||||||
task_tab1_button1->setText("Draw a black line");
|
monochrome->setText("Convert to monochrome");
|
||||||
QObject::connect(task_tab1_button1, SIGNAL(clicked()), this, SLOT (drawBlackLine()));
|
QObject::connect(monochrome, SIGNAL(clicked()), this, SLOT (convertToMonochrome()));
|
||||||
|
|
||||||
task_tab1_button2 = new QPushButton();
|
draw_black_line = new QPushButton();
|
||||||
task_tab1_button2->setText("Draw a rainbow cross");
|
draw_black_line->setText("Draw a black line");
|
||||||
QObject::connect(task_tab1_button2, SIGNAL(clicked()), this, SLOT (drawRainbowCross()));
|
QObject::connect(draw_black_line, SIGNAL(clicked()), this, SLOT (drawBlackLine()));
|
||||||
|
|
||||||
task_tab1_button3 = new QPushButton();
|
draw_rainbow_cross = new QPushButton();
|
||||||
task_tab1_button3->setText("Start the neverending acid trip!");
|
draw_rainbow_cross->setText("Draw a rainbow cross");
|
||||||
QObject::connect(task_tab1_button3, SIGNAL(clicked()), this, SLOT (acidTrippin()));
|
QObject::connect(draw_rainbow_cross, SIGNAL(clicked()), this, SLOT (drawRainbowCross()));
|
||||||
|
|
||||||
task_tab1_button4 = new QPushButton();
|
acid_trip = new QPushButton();
|
||||||
task_tab1_button4->setText("Draw a diagonal cross");
|
acid_trip->setText("Start the neverending acid trip!");
|
||||||
QObject::connect(task_tab1_button4, SIGNAL(clicked()), this, SLOT (drawDiagonalCross()));
|
QObject::connect(acid_trip, SIGNAL(clicked()), this, SLOT (acidTrippin()));
|
||||||
|
|
||||||
|
diagonal_cross = new QPushButton();
|
||||||
|
diagonal_cross->setText("Draw a diagonal cross");
|
||||||
|
QObject::connect(diagonal_cross, SIGNAL(clicked()), this, SLOT (drawDiagonalCross()));
|
||||||
|
|
||||||
line_slider = new QSlider(Qt::Horizontal);
|
line_slider = new QSlider(Qt::Horizontal);
|
||||||
line_slider->setMinimum(1);
|
line_slider->setMinimum(1);
|
||||||
@ -346,11 +375,12 @@ void ImageViewer::generateControlPanels() {
|
|||||||
line_slider->setValue(3);
|
line_slider->setValue(3);
|
||||||
//QObject::connect(lineSlider, SIGNAL(valueChanged(int)), this, SLOT (drawRainbowCross()));
|
//QObject::connect(lineSlider, SIGNAL(valueChanged(int)), this, SLOT (drawRainbowCross()));
|
||||||
|
|
||||||
|
task_tab1->addWidget(monochrome);
|
||||||
task_tab1->addWidget(new QLabel("Let's draw something!"));
|
task_tab1->addWidget(new QLabel("Let's draw something!"));
|
||||||
task_tab1->addWidget(task_tab1_button1);
|
task_tab1->addWidget(draw_black_line);
|
||||||
task_tab1->addWidget(task_tab1_button2);
|
task_tab1->addWidget(draw_rainbow_cross);
|
||||||
task_tab1->addWidget(task_tab1_button3);
|
task_tab1->addWidget(acid_trip);
|
||||||
task_tab1->addWidget(task_tab1_button4);
|
task_tab1->addWidget(diagonal_cross);
|
||||||
task_tab1->addWidget(new QLabel("This will not stop unless process is killed."));
|
task_tab1->addWidget(new QLabel("This will not stop unless process is killed."));
|
||||||
task_tab1->addWidget(line_slider);
|
task_tab1->addWidget(line_slider);
|
||||||
task_tab1->addWidget(new QLabel("Sets the width of the cross."));
|
task_tab1->addWidget(new QLabel("Sets the width of the cross."));
|
||||||
@ -368,8 +398,12 @@ void ImageViewer::generateControlPanels() {
|
|||||||
histogramm_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
histogramm_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
histogramm_label->setScaledContents(false);
|
histogramm_label->setScaledContents(false);
|
||||||
|
|
||||||
task_tab2_stats = new QLabel();
|
stats = new QLabel();
|
||||||
task_tab2_stats->setText("Intensity will be shown here.");
|
stats->setText("Intensity will be shown here.");
|
||||||
|
|
||||||
|
analyze_image = new QPushButton();
|
||||||
|
analyze_image->setText("Analyze image");
|
||||||
|
QObject::connect(analyze_image, SIGNAL(clicked()), this, SLOT(analyzeImage()));
|
||||||
|
|
||||||
brightness_slider = new QSlider(Qt::Horizontal);
|
brightness_slider = new QSlider(Qt::Horizontal);
|
||||||
brightness_slider->setMinimum(0);
|
brightness_slider->setMinimum(0);
|
||||||
@ -383,9 +417,10 @@ void ImageViewer::generateControlPanels() {
|
|||||||
contrast_slider->setValue(255);
|
contrast_slider->setValue(255);
|
||||||
QObject::connect(contrast_slider, SIGNAL(valueChanged(int)), this, SLOT (adjustContrast(int)));
|
QObject::connect(contrast_slider, SIGNAL(valueChanged(int)), this, SLOT (adjustContrast(int)));
|
||||||
|
|
||||||
task_tab2->addWidget(task_tab2_stats);
|
task_tab2->addWidget(stats);
|
||||||
task_tab2->addWidget(new QLabel("Histogramm"));
|
task_tab2->addWidget(new QLabel("Histogramm"));
|
||||||
task_tab2->addWidget(histogramm_label);
|
task_tab2->addWidget(histogramm_label);
|
||||||
|
task_tab2->addWidget(analyze_image);
|
||||||
task_tab2->addWidget(new QLabel("Brightness"));
|
task_tab2->addWidget(new QLabel("Brightness"));
|
||||||
task_tab2->addWidget(brightness_slider);
|
task_tab2->addWidget(brightness_slider);
|
||||||
task_tab2->addWidget(new QLabel("Contrast"));
|
task_tab2->addWidget(new QLabel("Contrast"));
|
||||||
|
@ -72,10 +72,12 @@ class ImageViewer : public QMainWindow {
|
|||||||
QWidget* task_tab_widget1;
|
QWidget* task_tab_widget1;
|
||||||
QVBoxLayout* task_tab1;
|
QVBoxLayout* task_tab1;
|
||||||
|
|
||||||
QPushButton* task_tab1_button1;
|
QPushButton* draw_black_line;
|
||||||
QPushButton* task_tab1_button2;
|
QPushButton* draw_rainbow_cross;
|
||||||
QPushButton* task_tab1_button3;
|
QPushButton* acid_trip;
|
||||||
QPushButton* task_tab1_button4;
|
QPushButton* diagonal_cross;
|
||||||
|
QPushButton* monochrome;
|
||||||
|
|
||||||
|
|
||||||
QSlider* line_slider;
|
QSlider* line_slider;
|
||||||
|
|
||||||
@ -83,8 +85,9 @@ class ImageViewer : public QMainWindow {
|
|||||||
QWidget* task_tab_widget2;
|
QWidget* task_tab_widget2;
|
||||||
QVBoxLayout* task_tab2;
|
QVBoxLayout* task_tab2;
|
||||||
|
|
||||||
QLabel* task_tab2_stats;
|
QLabel* stats;
|
||||||
QLabel* histogramm_label;
|
QLabel* histogramm_label;
|
||||||
|
QPushButton* analyze_image;
|
||||||
|
|
||||||
QSlider* brightness_slider;
|
QSlider* brightness_slider;
|
||||||
QSlider* contrast_slider;
|
QSlider* contrast_slider;
|
||||||
@ -109,6 +112,7 @@ class ImageViewer : public QMainWindow {
|
|||||||
void updateHistogramm();
|
void updateHistogramm();
|
||||||
void adjustBrightness(int b);
|
void adjustBrightness(int b);
|
||||||
void adjustContrast(int c);
|
void adjustContrast(int c);
|
||||||
|
void convertToMonochrome();
|
||||||
|
|
||||||
void open();
|
void open();
|
||||||
void print();
|
void print();
|
||||||
|
Loading…
Reference in New Issue
Block a user