设置opencv图像的行和列

时间:2013-09-25 19:25:33

标签: c++ opencv

我创建了一个创建阈值图像的函数。输入位于img,输出位于out。这是我的代码:

void *tresholdImage (CvMat *img, CvMat *out) {
    for (int i = 0; i < img->rows; i++)
        {
        for (int j = 0; j < img->cols; j++)
            {
            double x;
            if (cvGetReal2D(img, i, j) < 128) x = 0; else x = 255;
            cvSetReal2D(out, i, j, x);
            }
        }
    }

调用此功能时,out中的图片尺寸应与img中的图片尺寸相同。我想自动设置out的大小与img的大小相同。我在第一个for之前添加了这个:

out = cvCreateMat(img->rows, img->cols, img->type);

但它不起作用;编译器在CvGetMat中说坏标志。 但如果我把它放在主函数中,它就可以了。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

如果要在此调用期间创建结果图像,则需要以下内容:

CvMat * thresholdImage (CvMat *img) {
  CvMat *out = cvCreateMat(img->rows, img->cols, img->type);
  for (int i = 0; i < img->rows; i++)
    for (int j = 0; j < img->cols; j++) {
      double x;
      if (cvGetReal2D(img, i, j) < 128) x = 0; else x = 255;
      cvSetReal2D(out, i, j, x);
    }
  return out;
}

然后你将它用作:

CvMat *out = thresholdImage(img);