Commit c73a56235aeae36267302cb4aadf8a94ece5e63e

Authored by Josh Klontz
1 parent ce11fbba

generalized EqualizeHist to 3 channels

openbr/plugins/imgproc/equalizehist.cpp
... ... @@ -18,6 +18,8 @@
18 18  
19 19 #include <openbr/plugins/openbr_internal.h>
20 20  
  21 +using namespace cv;
  22 +
21 23 namespace br
22 24 {
23 25  
... ... @@ -32,7 +34,20 @@ class EqualizeHistTransform : public UntrainableTransform
32 34  
33 35 void project(const Template &src, Template &dst) const
34 36 {
35   - cv::equalizeHist(src, dst);
  37 + if (src.m().channels() == 1) {
  38 + equalizeHist(src, dst);
  39 + } else if (src.m().channels() == 3) {
  40 + // http://stackoverflow.com/questions/15007304/histogram-equalization-not-working-on-color-image-opencv
  41 + Mat ycrcb;
  42 + cvtColor(src, ycrcb, CV_BGR2YCrCb);
  43 + vector<Mat> channels;
  44 + split(ycrcb, channels);
  45 + equalizeHist(channels[0], channels[0]);
  46 + merge(channels, ycrcb);
  47 + cvtColor(ycrcb, dst, CV_YCrCb2BGR);
  48 + } else {
  49 + qFatal("Invalid channel count!");
  50 + }
36 51 }
37 52 };
38 53  
... ...