Mat类重载了各种数学运算符,比如加法,减法,乘法等。
加减法与数字运算表示图像的每个像素的蓝色分量于该数字进行运算。若想每个分量进行加减法,与cv::Scalar(b, g, r)进行加减,乘法于数字进行运算表示每个通道进行乘法运算,与Mat的加法和减法只能和自己大小相同的Mat进行运算。Mat的乘法表示矩阵的乘法,dot方法实现点乘,结果返回一个值。
例:
cv::Mat image = cv::imread("D:/images/space_shuttle.jpg");// Mat是一个opencv库中的数据类型,表示一张图篇
cv::Mat rgb, blob;
cv::cvtColor(image, rgb, cv::COLOR_BGR2RGB);//将图片从BGR格式转换为RGB格式
cv::resize(rgb, blob, cv::Size(224, 224));//将图片大小调整为224x224
blob.convertTo(blob, CV_32F);//将像素值转换为32位浮点数类型
blob = blob / 255.0;//将像素值归一化到0~1之间
cv::subtract(blob, cv::Scalar(0.485, 0.456, 0.406), blob);
cv::divide(blob, cv::Scalar(0.229, 0.224, 0.225), blob);
参考:
1、c++ opencv mat_OpenCV学习笔记(1)_weixin_39775976的博客-CSDN博客
2、cv::Mat::convertTo();cv::subtract();cv::Scalar();cv::divide()_码龄-1天的博客-CSDN博客