// 加减乘除
//dst = image - Scalar(50, 50, 50);//小心溢出;
//dst = image -Scalar(50, 50, 50);//小心溢出;
//divide(image, m, dst);
//multiply(image, m, dst);
加法--提亮
Mat dst;
dst=image+Scalar(50,50,50); //不过要防止数据丢失
减法同理
Mat dst;
dst=image-Scalar(50,50,50); //不过要防止数据丢失
乘、除法
Mat dst1 = Mat::zeros(image.size(), image.type());
Mat dst2 = Mat::zeros(image.size(), image.type());
Mat m = Mat::zeros(image.size(), image.type());
m = Scalar(2, 2, 2);
divide(image, m, dst1);
multiply(image, m, dst2);
imshow("原图", image);
imshow("除操作", dst1);
imshow("乘操作", dst2);
实质
int w = dst.cols;//列数
int h = dst.rows;//行数
dst = Scalar(50, 50, 50);
for (int row = 0; row < h; row++) {
for (int col = 0; col < w; col++) {
Vec3b p1 = image.at<Vec3b>(row, col);
Vec3b p2 = dst.at<Vec3b>(row, col);
dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(p1[0] + p2[0]); //防止溢出
dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(p1[1] + p2[1]);
dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(p1[2] + p2[1]);
}
}
imshow("原图", image);
imshow("操作", dst);