为 opencv 图像设置行和列

Set rows and cols for opencv image

本文关键字:设置 opencv 图像      更新时间:2023-10-16

我做了一个函数来创建阈值图像。输入以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中说坏旗。但是如果我把它放在主函数中,它就可以工作了。有人可以帮助我吗?

如果要

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

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