summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/gil/example/histogram.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/gil/example/histogram.cpp')
-rw-r--r--src/boost/libs/gil/example/histogram.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/boost/libs/gil/example/histogram.cpp b/src/boost/libs/gil/example/histogram.cpp
new file mode 100644
index 00000000..b1b48964
--- /dev/null
+++ b/src/boost/libs/gil/example/histogram.cpp
@@ -0,0 +1,49 @@
+//
+// Copyright 2005-2007 Adobe Systems Incorporated
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/jpeg.hpp>
+
+#include <algorithm>
+#include <fstream>
+
+// Example file to demonstrate a way to compute histogram
+
+using namespace boost::gil;
+
+template <typename GrayView, typename R>
+void gray_image_hist(GrayView const& img_view, R& hist)
+{
+ for (auto it = img_view.begin(); it != img_view.end(); ++it)
+ ++hist[*it];
+
+ // Alternatively, prefer the algorithm with lambda
+ // for_each_pixel(img_view, [&hist](gray8_pixel_t const& pixel) {
+ // ++hist[pixel];
+ // });
+}
+
+template <typename V, typename R>
+void get_hist(const V& img_view, R& hist) {
+ gray_image_hist(color_converted_view<gray8_pixel_t>(img_view), hist);
+}
+
+int main() {
+ rgb8_image_t img;
+ read_image("test.jpg", img, jpeg_tag());
+
+ int histogram[256];
+ std::fill(histogram,histogram + 256, 0);
+ get_hist(const_view(img), histogram);
+
+ std::fstream histo_file("out-histogram.txt", std::ios::out);
+ for(std::size_t ii = 0; ii < 256; ++ii)
+ histo_file << histogram[ii] << std::endl;
+ histo_file.close();
+
+ return 0;
+}