opencv Mat 每行数据归一化

发布网友 发布时间:2022-04-23 07:44

我来回答

1个回答

热心网友 时间:2022-06-17 21:04

是不是想将每横行的所有数值归一化到0到1之间?如果是,请这样

// 获取原数组中最大值,归一化之后此最大值为1.
vector<uchar> max;
for ( int i = 0; i < img.rows; i++)
     max.push_back(img.at<uchar>(i, 0 ));
for ( int i = 0; i < img.cols; i++)
    for ( int j = 0; j < img.rows; j++)
        if (img.at<uchar>(j, i ) > max[j] )
            max[j] =  img.at<uchar>(j, i );
// 新建Mat,其中将存入归一化之后的值
Mat newImg = Mat::zeros( img.cols, img.rows, CV_32FC1 );
for ( int i = 0; i < img.cols; i++)
    for ( int j = 0; j < img.rows; j++)
        newImg.at<float>[j, i] = img.at<uchar[j, i] / max[j];
//至此结束,newImg里面就是你要的归一化之后的矩阵

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com