使用 Scalar 函数进行加减乘除
dst = image + Scalar(50, 50, 50);
imshow("加法运算",dst);
dst = image - Scalar(50, 50, 50);
imshow("加法运算",dst);
dst = image / Scalar(2, 2, 2);
imshow("除法法运算", dst);
Mat m = Mat::zeros(image.size(),image.type());
m = Scalar(2,2,2);
multiply(image,m,dst);
imshow("乘法运算", dst);
底层代码分解
int w = image.cols;
int h = image.rows;
int dims = image.channels();
m = Scalar(50,50,50);
for (int row = 0; row < h; row++)
{
for (int cols = 0; cols < w; cols++)
{
Vec3b p1 = image.at<Vec3b>(row, cols);
Vec3b p2 = image.at<Vec3b>(row, cols);
image.at<Vec3b>(row, cols)[0] = saturate_cast<uchar>(p1[0]+p2[0]);
image.at<Vec3b>(row, cols)[1] = saturate_cast<uchar>(p1[1] + p2[1]);
image.at<Vec3b>(row, cols)[2] = saturate_cast<uchar>(p1[2] + p2[2]);
}
}
使用OpenCV 自带函数
//add(image,m,dst);
//subtract(image, m, dst);
//multiply(image, m, dst);cpp