我创建了一个创建阈值图像的函数。输入位于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
中说坏标志。
但如果我把它放在主函数中,它就可以了。有人可以帮帮我吗?
答案 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);