Exemplo n.º 1
0
/// Testing cartToDisp and dispToCart
bool testSparsePointConversion() {
  CvStereoCamModel camModel;
  camModel.setCameraParams(FX, FY, TX, CLX, CRX, CY, DISPUNITSCALE);
  char filename[]= "test/pointsInCartesian.xml";

  CvMat* points_cart  = (CvMat*)cvLoad(filename);
  if (points_cart == NULL ) {
    printf("Cannot load data file: %s\n", filename);
    return false;
  }
  CvMat* points_cart0 = (CvMat*)cvCreateMat(points_cart->rows, points_cart->cols,
      CV_64FC1);
  CvMat* points_disp  = (CvMat*)cvCreateMat(points_cart->rows, points_cart->cols,
      CV_64FC1);
  CvMat* points_diff  = (CvMat*)cvCreateMat(points_cart->rows, points_cart->cols,
      CV_64FC1);

  camModel.cartToDisp(points_cart, points_disp);
  camModel.dispToCart(points_disp, points_cart0);

  cvAbsDiff(points_cart, points_cart0, points_diff);

  double min_val, max_val;

  cvMinMaxLoc(points_diff, &min_val, &max_val);

  if (max_val > .1e-10) {
    printf("dispToCart() or cartToDisp() failed: max diff = %f\n", max_val);
    return false;
  }

  cvReleaseMat(&points_cart);
  cvReleaseMat(&points_disp);
  cvReleaseMat(&points_diff);

  return true;
}