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)
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);
}