Fixed facerec_demo.cpp.
authorPhilipp Wagner <no@email>
Sat, 5 May 2012 09:16:21 +0000 (09:16 +0000)
committerPhilipp Wagner <no@email>
Sat, 5 May 2012 09:16:21 +0000 (09:16 +0000)
samples/cpp/facerec_demo.cpp

index 256773b..8b6d7dd 100644 (file)
 using namespace cv;
 using namespace std;
 
+Mat toGrayscale(InputArray _src) {
+    Mat src = _src.getMat();
+    // only allow one channel
+    if(src.channels() != 1)
+        CV_Error(CV_StsBadArg, "Only Matrices with one channel are supported");
+    // create and return normalized image
+    Mat dst;
+    cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
+    return dst;
+}
+
 void read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, char separator = ';') {
     std::ifstream file(filename.c_str(), ifstream::in);
     if (!file)
@@ -79,10 +90,10 @@ int main(int argc, const char *argv[]) {
     for (int i = 0; i < min(10, W.cols); i++) {
         // get eigenvector #i
         Mat ev = W.col(i).clone();
-        // reshape to original site
-        Mat grayscale, cgrayscale;
-        cvtColor(ev.reshape(1, height), grayscale, COLOR_BGR2GRAY);
+        // reshape to original size AND normalize between [0...255]
+        Mat grayscale = toGrayscale(ev.reshape(1, height));
         // show image (with Jet colormap)
+        Mat cgrayscale;
         applyColorMap(grayscale, cgrayscale, COLORMAP_JET);
         imshow(format("%d", i), cgrayscale);
     }