bool ObjectRecognition::readDatabase(const string& dir, vector<Mat>& databaseDescriptors, vector<string>& files)
{
   TickMeter tm;
   tm.start();  
   getdir(dir,files);
   string outString = "Start Reading Directory.png";
   cout << outString << endl;
   
   string extention = ".png"; 
   vector<string>::iterator it = files.begin();
   for (unsigned int i = 0;i < files.size();i++) 
   {
       if ( files[i].size() > 4 && files[i].compare( files[i].size() - 4, 4 , extention) == 0)
       {
     	   Mat img = imread( dir + files[i] , CV_LOAD_IMAGE_GRAYSCALE );
           //if( img.empty() )  cout << "Database descriptor " << files[i] << " can not be read or has no information." << endl;
           
           //cout << files[i]  << "\tRows" << img.rows << "\t Cols" << img.cols << "\t Type/Depth: " << img.depth() << endl;    
           img.assignTo(img, 5);
           
           databaseDescriptors.push_back( img );
       }
       it++;
   }
   tm.stop();
   cout << "End reading directory in " << tm.getTimeMilli() << " ms, of size " << DB.size() << endl;
   return true;
}
Example #2
0
Mat applyMask(const Mat &image, int *mask, int maskSize) {
    // Applies generic 3x3 mask on image
    Mat blur;
    image.assignTo(blur, CV_32S);
    for (int row = maskSize / 2; row < image.rows - maskSize / 2; row++) {
        for (int col = maskSize / 2; col < image.cols - maskSize / 2; col++) {
            // Gets the value of an applied mask of size 3x3
            short val = 0;
            for (int m = 0; m < maskSize; m++) {
                for (int n = 0; n < maskSize; n++) {
                    int r = row+m - 1,
                        c = col+n - 1;
                    val += mask[maskSize*m + n] * image.at<uchar>(r, c);
                }
            }
            blur.at<int>(row, col) = val;
        }
    }
    double mn, mx;
    minMaxLoc(blur, &mn, &mx);
    cout << "Max: " << mx << endl;
    cout << "Min: " << mn << endl;
    cout << "Scale factor: " << 255 / (mx-mn) << endl;
    blur -= mn;
    blur.convertTo(blur, CV_8U, 255 / (mx-mn));

    return blur;
}
Example #3
0
bool ImageFileListSequence::read_frame(Mat& img)
{

  if (current_frame < size())
    {

      DEBUGMSG("Reading image file '%s'\n", files[current_frame + file_start - 1].c_str());
      Mat tmp = imread(files[current_frame + file_start - 1].c_str());

      if (tmp.empty())
        {
          img.release();
          return false;
        }

      if (sequence_width == img.cols && sequence_height == img.rows)
        {
          tmp.assignTo(img);
        }
      else resize(tmp, img, cv::Size(sequence_width, sequence_height));

    }
  else img.release();

  if (!img.empty())
    current_frame++;

  return !img.empty();

}