加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用min和max在Mat中缩放每个单元格

发布时间:2020-12-16 10:01:14 所属栏目:百科 来源:网络整理
导读:我无法找出使用给定范围缩放cv :: Mat中所有单元格的函数.它似乎是一个非常有用的功能,或者我应该手动迭代矩阵? 我真正想要做的是扩展CvSVM的训练数据.每列都有各自的原因. 解决方法 没有内置函数可以做到这一点,但可以通过在每个 column上应用带有参数NORM
我无法找出使用给定范围缩放cv :: Mat中所有单元格的函数.它似乎是一个非常有用的功能,或者我应该手动迭代矩阵?

我真正想要做的是扩展CvSVM的训练数据.每列都有各自的原因.

解决方法

没有内置函数可以做到这一点,但可以通过在每个 column上应用带有参数NORM_MINMAX的 normalize来轻松完成.

请参阅示例,其中数据是原始数据,缩放是缩放输出,其中每列在[0,1]范围内独立标准化:

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main()
{
    Mat1f data = (Mat1f(3,4) << 0.1f,2.f,30.f,500.f,0.55f,22.f,330.f,5500.f,1.f,12.f,3030.f,50500.f);

    float out_min = 0.f;
    float out_max = 1.f;

    Mat1f scaled(data.rows,data.cols,0.f);
    for (int c = 0; c < data.cols; ++c)
    {
        normalize(data.col(c),scaled.col(c),out_min,out_max,NORM_MINMAX);
    }

    cout << scaled << endl;

    // Scaled data:

    // 0.0  0.0  0.0  0.0
    // 0.5  1.0  0.1  0.1
    // 1.0  0.5  1.0  1.0

    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读