a41f123d3c
It was a bit much I guess.
116 lines
2.1 KiB
C++
116 lines
2.1 KiB
C++
#pragma once
|
|
#include <string>
|
|
#include <boost/filesystem.hpp>
|
|
#include <Magick++.h>
|
|
|
|
#include <bitset> //in which we store our feature vectors
|
|
#include <algorithm> //for sorting
|
|
|
|
using namespace std;
|
|
using namespace Magick;
|
|
|
|
namespace fs = boost::filesystem;
|
|
|
|
//Virtual base class
|
|
//Holds definitions for all common functions of descriptors,
|
|
//but should be overloaded by a child class
|
|
class Mutation {
|
|
public:
|
|
//virtual void mutate(Image* img) = 0;
|
|
virtual Image* getMutated(Image* img) = 0;
|
|
|
|
virtual string ToString() = 0;
|
|
virtual fs::path ToPath() {
|
|
return fs::path(this->ToString());
|
|
}
|
|
};
|
|
|
|
//Just the way dogs see
|
|
class Grayscale : public Mutation {
|
|
public:
|
|
Image* getMutated(Image* img) {
|
|
Image* mut = new Image(*img);
|
|
mut->type(GrayscaleType);
|
|
/*mut->quantizeColorSpace(GRAYColorspace);
|
|
mut->quantizeColors(256);
|
|
mut->quantize();
|
|
mut->type(TrueColorType);*/
|
|
return mut;
|
|
}
|
|
string ToString() {
|
|
return "Grayscale";
|
|
}
|
|
};
|
|
|
|
class Flip : public Mutation {
|
|
public:
|
|
Image* getMutated(Image* img) {
|
|
Image* mut = new Image(*img);
|
|
mut->flip();
|
|
return mut;
|
|
}
|
|
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, 5.0);
|
|
return mut;
|
|
}
|
|
string ToString() {
|
|
return "Brighten";
|
|
}
|
|
}; |