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里面就是你要的归一化之后的矩阵