首页 > 解决方案 > 为什么opencv将灰度图像归一化为一个充满零的矩阵?

问题描述

我正在尝试将图像提供给 LibTorch 张量。为此,我首先在 opencv 中进行一些预处理。一个重要的部分是标准化。我为此使用了 cv::normalize() 方法,但打印的 Mat 对象充满了零。

我找到了一些代码并尝试了它,但它没有帮助。这里是:

Mat m = imread("image.jpg",0);
Mat_<float> fm;

m.convertTo(fm,CV_32F);

我实际使用的代码如下:

Mat image_to_tensor(string filename, int flag) {

    Mat image = imread(filename, flag);
    Mat_<float> out;
    float hight = image.rows;
    float width = image.cols;
    Size size(128,128);
    imshow("Not Resized", image);

    resize(image, image, size);
    image.convertTo(out, 5);
    normalize(image, image, 0.5, 0.5);
    imshow("Resized IMG", image);
    cout << image;
    waitKey(0);

    cout << "left image to tensor" << endl;
    return image;
}

我期望一个 Mat 对象,其中包含零到一之间的数字。我得到了一个满是零的 Mat 对象。

标签: opencv

解决方案


是的。如果我评论这部分image.convertTo(out, 5); normalize(image, image, 0.5, 0.5);代码有效。但是数字的范围太高了。


推荐阅读