Course: CS213 – Object Oriented Programming
Instructor: Dr. Mohamed El Ramly
- Eyad Hatem – 20240097 / S26
- Sherif Ahmed – 20240277 / All-B
- Karim Ashraf – 20240419 / S26
This project is a C++ image processing application developed using the Qt Framework to provide an interactive graphical user interface (GUI).
It allows users to load, view, edit, and save images using a wide range of filters and visual effects.
The project demonstrates the use of Object-Oriented Programming (OOP) principles such as encapsulation, modularity, inheritance, and reusability.
- Load and preview images directly in the GUI.
- Apply multiple filters and effects to images.
- Undo the last applied filter.
- Save the edited image with a custom name.
- Simple, user-friendly interface built with Qt Widgets.
- Organized and modular code based on OOP concepts.
- Grayscale – Convert the image into shades of gray.
- Black & White – Convert to pure black and white.
- Invert – Invert all colors (255 - RGB).
- Merge – Combine two images into one.
- Flip – Flip the image horizontally or vertically.
- Rotate – Rotate the image by 90°, 180°, or 270°.
- Darken & Lighten – Adjust the brightness.
- Crop – Select and cut a specific region of the image.
- Resize – Change the image dimensions.
- Add Frame – Add a colored or decorated border.
- Edge Detection – Highlight edges using gradient-based filtering.
- Blur – Soften the image for a smoother look.
- Natural Sunlight – Add warm sunlight tones.
- Oil Painting Effect – Simulate an artistic oil painting.
- TV Noise – Add random static noise.
- Purple Effect – Apply a violet or purple tint.
- Infrared Effect – Simulate infrared-style photography.
- Image Skewing – Skew the image left or right.
- Sepia Effect – Add a classic warm vintage tone.
- Motion Blur – Add a motion-like blur effect.
- Pencil Sketch – Convert the image to a pencil drawing style.
- Film Effect – Add cinematic colors and tones.
- Frame Styles – Choose between different frame templates.
The graphical interface was created using Qt Widgets and designed for simplicity and ease of use.
- Load Button – Choose and open an image from your device.
- Filter Buttons – Apply selected filters with one click.
- Save Button – Save the edited image to a file.
- Undo Button – Revert to the previous image.
- Preview Label – Displays the image in real-time.
- Dialogs – Used for file selection, color picking, and text input.
- Language: C++
- Framework: Qt 6 (Qt Widgets)
- Compiler: MinGW 64-bit
- Build System: CMake
- Programming Paradigm: Object-Oriented Programming (OOP)
- main.cpp: Entry point of the application.
- widget.h / widget.cpp: Handles GUI logic and user interaction.
- filters.h / filters.cpp: Contains all implemented image filters.
- image_class.h: Handles image loading, saving, and pixel manipulation.
- CMakeLists.txt: Build configuration file for the project.
Note: The program loads images from the same directory where the executable file is located.
You can also select any image manually using the "Load" button in the GUI.
- Open the project using the
.proorCMakeLists.txtfile. - Build the project by clicking the Run button.
- The GUI window will open automatically.
- Use the buttons to apply filters, undo, or save images.
- Open the folder in VS Code.
- Press Ctrl + Shift + B to build and compile the executable.
- Run the generated
.exefile. - Make sure the image files are in the same folder as the executable.
Before each filter is applied, the program saves a backup copy of the current image.
You can restore the previous version anytime by pressing the Undo button.
- Add live preview for filters before applying them.
- Support drag and drop image loading.
- Add AI-based filters such as background removal or style transfer.
This project demonstrates how C++ and the Qt Framework can be combined to build a functional and user-friendly image editor.
It applies key OOP principles to ensure modularity, maintainability, and extensibility.
Each team member contributed to different parts of the project, resulting in a stable and organized application that supports a wide variety of image filters.