Skip to content

Commit 858cc2e

Browse files
authored
Merge pull request #1 from Kratos-The-Rover/master
Linux support
2 parents 736aa70 + b8afd83 commit 858cc2e

6 files changed

Lines changed: 94 additions & 21 deletions

File tree

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ find_package(OpenCV REQUIRED)
66
include_directories(${OpenCV_INCLUDE_DIRS})
77
include_directories(src/include/)
88

9-
add_executable(test src/main.cpp src/folderParser.cpp src/imageOverlayAndAugmentor.cpp src/include/imageOverlayAndAugmentor.h)
10-
target_link_libraries(test ${OpenCV_LIBS})
9+
add_executable(test_ex src/main.cpp src/folderParser.cpp src/imageOverlayAndAugmentor.cpp src/include/imageOverlayAndAugmentor.h)
10+
target_link_libraries(test_ex ${OpenCV_LIBS})
11+
target_link_libraries(test_ex stdc++fs)

src/folderParser.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,21 @@
44

55
#include "folderParser.h"
66
using namespace cv;
7-
namespace fs = std::filesystem;
7+
88
using std::cin;
99
using std::cout;
1010
using std::fstream;
1111
using std::to_string;
1212

13+
#if __has_include(<filesystem>)
14+
#include <filesystem>
15+
namespace fs = std::filesystem;
16+
#elif __has_include(<experimental/filesystem>)
17+
#include <experimental/filesystem>
18+
namespace fs = std::experimental::filesystem;
19+
#endif
20+
21+
1322
void folderParser::FolderParser(std::string &pathToDirectory,bool custom)
1423
{
1524
int n = 0;

src/imageOverlayAndAugmentor.cpp

Lines changed: 67 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
//created by harshvardhan
22
#include "imageOverlayAndAugmentor.h"
33

4+
#if __has_include(<filesystem>)
5+
#include <filesystem>
6+
namespace fs = std::filesystem;
7+
#elif __has_include(<experimental/filesystem>)
8+
#include <experimental/filesystem>
9+
namespace fs = std::experimental::filesystem;
10+
#endif
11+
412

513
void imageOverlayAndAugmentor::imageController(std::string& analysisCustom,std::string& analysis,const long analysisLineNumbers,const long analysisCustomLineNumbers)
614
{
@@ -50,6 +58,7 @@ void imageOverlayAndAugmentor::imageController(std::string& analysisCustom,std::
5058
std::uniform_int_distribution<std::mt19937::result_type> n2(0,analysisCustomLineNumbers);
5159
std::uniform_int_distribution<std::mt19937::result_type> imageAdjuster(0,10);
5260
std::uniform_int_distribution<std::mt19937::result_type> randomer(0, 1000);
61+
std::uniform_int_distribution<std::mt19937::result_type> noise_stddev(0, 30);
5362
num = 0;
5463

5564

@@ -115,7 +124,8 @@ void imageOverlayAndAugmentor::imageController(std::string& analysisCustom,std::
115124
}
116125
else
117126
{
118-
datasetImage1 = datasetImage;
127+
datasetImage1 = GaussianNoise(datasetImage, 0.0, (int)noise_stddev(mt4));
128+
datasetImage1 = ColorJitter(datasetImage1, 20.0);
119129
}
120130
std::string Name = std::to_string(num) + "customImages_" + std::to_string(i);
121131
std::string imgName = Name + ".jpeg";
@@ -124,10 +134,12 @@ void imageOverlayAndAugmentor::imageController(std::string& analysisCustom,std::
124134
image = imageOverlay(customImage, datasetImage1, (int)x(mt3), (int)y(mt4), Name);
125135
}
126136
else
127-
{
137+
{
128138
image = imageRotater(customImage, datasetImage1, (int)x(mt3), (int)y(mt5), Name);
129139
}
140+
130141
imageSaver(imgName, image);
142+
131143
}
132144
//closing csvReader Custom
133145

@@ -152,6 +164,46 @@ cv::Mat imageOverlayAndAugmentor::imageBrightnessAndContrastControl(cv::Mat imag
152164
}
153165

154166

167+
cv::Mat imageOverlayAndAugmentor::GaussianNoise(const cv::Mat src, double Mean, double StdDev)
168+
{
169+
cv::Mat src_16SC, dst;
170+
cv::Mat Gauss_noise = cv::Mat(src.size(), CV_16SC3);
171+
cv::randn(Gauss_noise, cv::Scalar::all(Mean), cv::Scalar::all(StdDev));
172+
173+
src.convertTo(src_16SC, CV_16SC3);
174+
cv::addWeighted(src_16SC, 1.0, Gauss_noise, 1.0, 0.0, src_16SC);
175+
src_16SC.convertTo(dst, src.type());
176+
return dst;
177+
}
178+
179+
cv::Mat imageOverlayAndAugmentor::ColorJitter(const cv::Mat src, double maxjit)
180+
{
181+
cv::Mat img, dst;
182+
cv::cvtColor(src, img, cv::COLOR_BGR2HSV);
183+
184+
std::random_device rd;
185+
std::mt19937 mt(rd());
186+
187+
std::uniform_int_distribution<std::mt19937::result_type> jitter(-maxjit,maxjit);
188+
189+
for (int c = 0; c<img.channels(); c++)
190+
{
191+
double jit = (int)jitter(mt);
192+
193+
for (int i=0; i<img.rows; i++)
194+
{
195+
for (int j=0; j<img.cols; j++)
196+
{
197+
img.at<cv::Vec3b>(i,j)[c] = cv::saturate_cast<uchar>(img.at<cv::Vec3b>(i,j)[c]+ jit);
198+
}
199+
}
200+
}
201+
202+
cv::cvtColor(img, dst, cv::COLOR_HSV2BGR);
203+
204+
return dst;
205+
}
206+
155207
cv::Mat imageOverlayAndAugmentor::imageOverlay(cv::Mat customImage, cv::Mat datasetImage,int x,int y,std::string imgName)
156208
{
157209

@@ -192,6 +244,8 @@ cv::Mat imageOverlayAndAugmentor::imageOverlay(cv::Mat customImage, cv::Mat data
192244
return datasetImage;
193245
}
194246

247+
248+
195249
cv::Mat imageOverlayAndAugmentor::imageRotater(cv::Mat customImage,cv::Mat randomImage,int X,int Y,std::string imageName)
196250
{
197251
bool negative = false;
@@ -216,8 +270,8 @@ cv::Mat imageOverlayAndAugmentor::imageRotater(cv::Mat customImage,cv::Mat rando
216270
cv::warpAffine(customImage, dst, rot, bbox.size());
217271
int height = dst.rows;
218272
int width = dst.cols;
219-
cv::imwrite("test.png", dst);
220-
cv::waitKey(2);
273+
//cv::imwrite("test.png", dst);
274+
//cv::waitKey(2);
221275

222276
if (1920 > dst.cols + x)
223277
{
@@ -248,13 +302,13 @@ cv::Mat imageOverlayAndAugmentor::imageRotater(cv::Mat customImage,cv::Mat rando
248302

249303
}
250304

251-
cv::Mat image = randomImage;
252-
cv::Mat croppedImage;
253-
croppedImage = image(cv::Rect(x, y, dst.cols, dst.rows));
254-
dst.copyTo(croppedImage);
305+
//cv::Mat image = randomImage;
306+
//cv::Mat croppedImage;
307+
//croppedImage = image(cv::Rect(x, y, dst.cols, dst.rows));
308+
//dst.copyTo(croppedImage);
255309
std::string bboxName = imageName + ".txt";
256310
boundingBox(x, y, width, height, bboxName);
257-
return image;
311+
return dst;
258312
}
259313

260314

@@ -266,13 +320,13 @@ void imageOverlayAndAugmentor::boundingBox(int x, int y, int h, int w, std::stri
266320
double H = (double)h / 1080;
267321
double W = (double) w / 1920;
268322
std::string bboxName;
269-
if (std::filesystem::exists("bbox"))
323+
if (fs::exists("bbox"))
270324
{
271325
bboxName = "bbox\\" + name;
272326
}
273327
else
274328
{
275-
std::filesystem::create_directory("bbox");
329+
fs::create_directory("bbox");
276330
bboxName = "bbox\\" + name;
277331
}
278332
std::fstream fout;
@@ -284,13 +338,13 @@ void imageOverlayAndAugmentor::boundingBox(int x, int y, int h, int w, std::stri
284338
void imageOverlayAndAugmentor::imageSaver(std::string imgName,cv::Mat image)
285339
{
286340
std::string imageName;
287-
if (std::filesystem::exists("image"))
341+
if (fs::exists("image"))
288342
{
289343
imageName = "image\\" + imgName;
290344
}
291345
else
292346
{
293-
std::filesystem::create_directory("image");
347+
fs::create_directory("image");
294348
imageName = "image\\" + imgName;
295349
}
296350
cv::imwrite(imageName, image);

src/include/folderParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
#ifndef OPENCVDATASETCREATOR_FOLDERPARSER_H
66
#define OPENCVDATASETCREATOR_FOLDERPARSER_H
7-
#include<filesystem>
7+
88
#include<iostream>
99
#include<fstream>
1010
#include<vector>

src/include/imageOverlayAndAugmentor.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
#include<string>
99
#include<opencv2/opencv.hpp>
1010
#include<opencv2/opencv.hpp>
11-
#include<filesystem>
11+
1212
#include <fstream>
1313
#include <random>
1414
#include <sstream>
1515

16+
#define PI 3.14159265359
1617

1718
class imageOverlayAndAugmentor {
1819
public:
@@ -21,6 +22,8 @@ class imageOverlayAndAugmentor {
2122

2223
private:
2324
cv::Mat imageBrightnessAndContrastControl(cv::Mat image,int brightnessRandom,int contrastRandom);
25+
cv::Mat GaussianNoise(const cv::Mat src, double Mean, double StdDev);
26+
cv::Mat ColorJitter(const cv::Mat src, double maxjit);
2427
cv::Mat imageOverlay(cv::Mat customImage,cv::Mat randomImage,int x,int y,std::string imageName);
2528
cv::Mat imageRotater(cv::Mat customImage, cv::Mat randomImage, int x, int y, std::string imageName);
2629
void boundingBox(int XMid,int YMid,int h,int w,std::string name);

src/main.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@
44
#include "imageOverlayAndAugmentor.h"
55
#include"folderParser.h"
66
using namespace cv;
7-
namespace fs = std::filesystem;
7+
8+
#if __has_include(<filesystem>)
9+
#include <filesystem>
10+
namespace fs = std::filesystem;
11+
#elif __has_include(<experimental/filesystem>)
12+
#include <experimental/filesystem>
13+
namespace fs = std::experimental::filesystem;
14+
#endif
815

916
int main()
1017
{
@@ -29,12 +36,11 @@ int main()
2936
std::string analysisLocation =current_path + "/analysis.csv";
3037

3138

32-
img->imageController(analysisCustomLocation,analysisLocation,fParser->lineNumbersReady -1,fParser->lineNumbersCustom -1);
39+
img->imageController(analysisCustomLocation,analysisLocation,fParser->lineNumbersReady ,fParser->lineNumbersCustom );
3340

3441

3542
delete img;
3643
delete fParser;
3744

3845

39-
4046
}

0 commit comments

Comments
 (0)