view c/cvutils.cpp @ 126:336926453b28

added conversion function from keypoint vector to point vector and cleaned headers
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 17 Aug 2011 00:20:31 -0400
parents ff5403319cec
children d19d6e63dd77
line wrap: on
line source

#include "cvutils.hpp"

//#include "opencv/cv.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/features2d/features2d.hpp"

#include <iostream>
#include <vector>

using namespace std;
using namespace cv;

void keypPoints2Points(const vector<KeyPoint>& kpts, vector<Point2f>& points) {
  points.clear();
  points.resize(kpts.size());

  for (unsigned int i=0; i<kpts.size(); i++)
    points[i] = kpts[i].pt;
}

IplImage* allocateImage(const int& width, const int& height, const int& depth, const int& channels) { return ::allocateImage(cvSize(width, height), depth, channels);}

IplImage* allocateImage(const CvSize& size, const int& depth, const int& channels) {
  IplImage* image = cvCreateImage(size, depth, channels);

  if (!image) {
    cerr << "Error: Couldn't allocate image.  Out of memory?\n" << endl;
    exit(-1);
  }

  return image;
}

int goToFrameNum(CvCapture* inputVideo, const int& currentFrameNum, const int& targetFrameNum) {
  int frameNum = currentFrameNum;
  if (currentFrameNum > targetFrameNum) {
    cerr << "Current frame number " << currentFrameNum << " is after the target frame number " << targetFrameNum << "." << endl;
  } else if (currentFrameNum < targetFrameNum) {
    IplImage* frame = cvQueryFrame(inputVideo);
    frameNum++;
    while (frame && frameNum<targetFrameNum) {
      frame = cvQueryFrame(inputVideo);
      frameNum++;
    }
  }
  
  return frameNum;
}