Skip to content

Commit 8b9b15e

Browse files
author
William Emfinger
committed
updated library to allow control over image output.
1 parent 4b9854f commit 8b9b15e

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

src/CMakeLists.txt

-1
This file was deleted.

src/objecttracker/include/objecttracker/sample_detector.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ class Sample_Detector {
4343
// Main Real-Time Loop
4444
DetectedObject run( Mat& image,
4545
Mat& maskOutput,
46-
const char* fname = "");
46+
const char* fname = "",
47+
bool writeImages = false);
4748

4849
private:
4950
// Webcam feed

src/objecttracker/src/objecttracker/sample_detector.cpp

+22-14
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ Mat equalizeIntensity(const Mat& inputImage)
116116
return Mat();
117117
}
118118

119-
vector<RotatedRect> hsv_method(Mat &image, Mat& imgMask) {
119+
vector<RotatedRect> hsv_method(Mat &image, Mat& imgMask, bool writeImages) {
120120

121121
// std::cout << "SAMPLE_DETECTOR::Starting YCrCb METHOD" << std::endl;
122122

@@ -131,35 +131,41 @@ vector<RotatedRect> hsv_method(Mat &image, Mat& imgMask) {
131131
Scalar(hue_max, saturation_max, value_max),
132132
hsv_filtered_image);
133133

134-
cv::imwrite("Sample-YCrCb-Threshold.png", hsv_filtered_image);
134+
if (writeImages)
135+
cv::imwrite("Sample-YCrCb-Threshold.png", hsv_filtered_image);
135136

136137
// Erode and Dilate
137138
obj_tracker.filter(hsv_filtered_image, hsv_erode_size, hsv_dilate_size);
138139

139-
cv::imwrite("Sample-YCrCb-Filtered.png", hsv_filtered_image);
140+
if (writeImages)
141+
cv::imwrite("Sample-YCrCb-Filtered.png", hsv_filtered_image);
140142

141143
// std::cout << "SAMPLE_DETECTOR::Completed YCrCb METHOD" << std::endl;
142144

143145
return obj_tracker.track(image,hsv_filtered_image,imgMask);
144146
}
145147

146-
vector<RotatedRect> grayscale_method(Mat& image, Mat& imgMask) {
148+
vector<RotatedRect> grayscale_method(Mat& image, Mat& imgMask, bool writeImages) {
147149

148150
// std::cout << "SAMPLE_DETECTOR::Starting Grayscale METHOD" << std::endl;
149151

150152
cvtColor(image, grayscale_image, CV_BGR2GRAY);
151153
Mat eq_gray;
152154
equalizeHist(grayscale_image,eq_gray);
153-
cv::imwrite("Sample-04-Grayscale.png", grayscale_image);
154-
cv::imwrite("Sample-Grayscale-equalized.png", eq_gray);
155+
if (writeImages) {
156+
cv::imwrite("Sample-04-Grayscale.png", grayscale_image);
157+
cv::imwrite("Sample-Grayscale-equalized.png", eq_gray);
158+
}
155159

156160
threshold(eq_gray, grayscale_filtered_image, min_grayscale_thresh, max_grayscale_thresh, 0);
157-
cv::imwrite("Sample-05-Grayscale-Threshold.png", grayscale_filtered_image);
161+
if (writeImages)
162+
cv::imwrite("Sample-05-Grayscale-Threshold.png", grayscale_filtered_image);
158163

159164
// Erode and Dilate
160165
obj_tracker.filter(grayscale_filtered_image, grayscale_erode_size, grayscale_dilate_size);
161166

162-
cv::imwrite("Sample-06-Grayscale-Filtered.png", grayscale_filtered_image);
167+
if (writeImages)
168+
cv::imwrite("Sample-06-Grayscale-Filtered.png", grayscale_filtered_image);
163169

164170
// std::cout << "SAMPLE_DETECTOR::Completed Grayscale METHOD" << std::endl;
165171

@@ -169,27 +175,29 @@ vector<RotatedRect> grayscale_method(Mat& image, Mat& imgMask) {
169175
// Main Real-Time Loop
170176
DetectedObject Sample_Detector::run( Mat& image,
171177
Mat& maskOutput,
172-
const char* fname)
178+
const char* fname,
179+
bool writeImages)
173180
{
174181
DetectedObject object;
175182
object.state = HIDDEN;
176183

177184
Mat hsvMask = Mat::zeros(image.size(), CV_8UC3);
178185
Mat grayMask = Mat::zeros(image.size(), CV_8UC3);
179-
vector<RotatedRect> hsv_tracked_objects = hsv_method(image, hsvMask);
180-
vector<RotatedRect> gray_tracked_objects = grayscale_method(image, grayMask);
186+
vector<RotatedRect> hsv_tracked_objects = hsv_method(image, hsvMask, writeImages);
187+
vector<RotatedRect> gray_tracked_objects = grayscale_method(image, grayMask, writeImages);
181188
vector<RotatedRect> tracked_objects;
182189

183190
if ( hsv_tracked_objects.size() > 0 && gray_tracked_objects.size() > 0 )
184191
{
185192
Mat AND_image;
186193
bitwise_and(hsv_filtered_image, grayscale_filtered_image, AND_image);
187-
cv::imwrite("Sample-07-Bitwise-AND-Filtered.png", AND_image);
194+
if (writeImages)
195+
cv::imwrite("Sample-07-Bitwise-AND-Filtered.png", AND_image);
188196

189197
Mat bitwise_and_tracked;
190198
tracked_objects = obj_tracker.track(image, AND_image, maskOutput);
191-
cv::imwrite("Sample-08-Bitwise-AND-Tracked.png", maskOutput);
192-
std::cout << "OBJECT FOUND!!!!!" << std::endl;
199+
if (writeImages)
200+
cv::imwrite("Sample-08-Bitwise-AND-Tracked.png", maskOutput);
193201
} else if ( hsv_tracked_objects.size() > 0 )
194202
{
195203
tracked_objects = hsv_tracked_objects;

0 commit comments

Comments
 (0)