/**************************************************************************** ** Copyright (c) 2025 Evgeny Teterin (nayk) ** All right reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the ** "Software"), to deal in the Software without restriction, including ** without limitation the rights to use, copy, modify, merge, publish, ** distribute, sublicense, and/or sell copies of the Software, and to ** permit persons to whom the Software is furnished to do so, subject to ** the following conditions: ** ** The above copyright notice and this permission notice shall be ** included in all copies or substantial portions of the Software. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ** ****************************************************************************/ #pragma once #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include //============================================================================== QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } class QLabel; class QResizeEvent; QT_END_NAMESPACE //============================================================================== // Форма для показа изображения в отдельном окне //============================================================================== class ImageViewer : public QWidget { Q_OBJECT public: ImageViewer(const QImage &image, QWidget *parent = nullptr); protected: void resizeEvent(QResizeEvent *event) override; private: QLabel *label; QImage labelImage; // void updateImage(); private slots: void save(); }; //============================================================================== // Главное окно //============================================================================== class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void resizeEvent(QResizeEvent *event) override; private: const int maximumImagesCount {15}; Ui::MainWindow *ui; bool actionsEnabled {false}; QList imgList; // void initialize(); cv::Mat prepareImage(const QString &operationName); void finallyImage(const cv::Mat &output); private slots: void updateControls(); void updateLabelImage(); // void onActionOpen(); void onActionSaveAs(); void onActionShowImage(); void onActionUndo(); void onActionReset(); // void btnGain(); void btnBrightnessAndContrast(); void btnHistogramEqual(); void btnLaplacian(); void btnUnsharpMask(); void btnMedian(); void btnFastNlMeans(); void btnAutoExposure(); void btnWhiteBalance(); void btnSaturation(); void btnVinete(); void btnClahe(); }; #endif // MAINWINDOW_H //==============================================================================