From 22479a1a5a3c15396fdadd32f7e5cb642c50a736 Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Tue, 14 Aug 2018 16:46:04 +0200 Subject: [PATCH] Add Flop, LowQ, JPEG, Hue, Brighten Extra mutators yay --- DescriptorManager.cpp | 5 ++++ DescriptorManager.h | 2 +- Mutation.h | 61 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/DescriptorManager.cpp b/DescriptorManager.cpp index 451de2f..739583c 100644 --- a/DescriptorManager.cpp +++ b/DescriptorManager.cpp @@ -21,6 +21,11 @@ DescriptorManager::DescriptorManager(const fs::path & image_path) { mutators[0] = new Grayscale(); mutators[1] = new Flip(); + mutators[2] = new Flop(); + mutators[3] = new JPEG(); + mutators[4] = new LowQ(); + mutators[5] = new Hue(); + mutators[6] = new Brighten(); } //No need to call destructor.. yet? diff --git a/DescriptorManager.h b/DescriptorManager.h index cb512bc..a16bc75 100644 --- a/DescriptorManager.h +++ b/DescriptorManager.h @@ -34,7 +34,7 @@ public: void outputMap(); private: static const int numDescriptors = 8; - static const int numMutations = 2; + static const int numMutations = 7; //TODO: automagically update this? map> descriptors[numDescriptors]; //array of maps that will hold the descriptors diff --git a/Mutation.h b/Mutation.h index cf4f9ab..634ab58 100644 --- a/Mutation.h +++ b/Mutation.h @@ -52,4 +52,65 @@ public: string ToString() { return "Flip"; } +}; + +class Flop : public Mutation { +public: + Image * getMutated(Image* img) { + Image* mut = new Image(*img); + mut->flop(); + return mut; + } + string ToString() { + return "Flop"; + } +}; + +class LowQ : public Mutation { +public: + Image * getMutated(Image* img) { + Image* mut = new Image(*img); + mut->quality(5); + return mut; + } + string ToString() { + return "Low Quality"; + } +}; + +class JPEG : public Mutation { +public: + Image * getMutated(Image* img) { + Image* mut = new Image(*img); + mut->quality(45); + return mut; + } + string ToString() { + return "JPEG"; + } +}; + +class Hue : public Mutation { +public: + Image * getMutated(Image* img) { + Image* mut = new Image(*img); + mut->modulate(100, 100, 150); + return mut; + } + string ToString() { + return "Hue"; + } +}; + +class Brighten : public Mutation { +public: + Image * getMutated(Image* img) { + Image* mut = new Image(*img); + mut->modulate(125, 100, 100); + mut->sigmoidalContrast(false, 20.0); + return mut; + } + string ToString() { + return "Brighten"; + } }; \ No newline at end of file