OpenCV 学习笔记
day5-图像像素的算数操作
函数
‘+’ ‘-’ ‘*’ ‘/’
例1
Mat dst;
dst = image + Scalar(50, 50, 50);
//给image每一个像素点加50
dst = image - Scalar(50, 50, 50);//减50
dst = image / Scalar(2, 2, 2);//除以50
//乘法一般用函数
函数要求相加(减,乘,除)的两幅图像具有相同的尺寸,并且像素类型是相同的。
参数 | 说明 |
---|---|
src1 | 第一个输入数组 |
src2 | 第二个与src1相同大小和类型的输入数组。 |
dst | 输出数组的大小和类型与src2相同 |
scale | 标量因子 |
src2 | 第二个与src1相同大小和类型的输入数组。 |
dtype | 输出数组的类型可选深度; 如果为-1,dst将有深度src2.depth(), |
但在按数组划分的情况下,当src1.depth()==src2.depth()时,只能传递-1。 |
1. multiply();//乘法函数 multiply(第一张图像,第二张图像,输出图像)
CV_EXPORTS_W void multiply(InputArray src1, InputArray src2,OutputArray dst, double scale = 1, int dtype = -1);
2. add(image,m,dst);//加法函数
void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1);
4. subtract(image,m,dst);//减法函数
void subtract(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1);
5. divide(image, m, dst);//除法函数
void divide(InputArray src1, InputArray src2, OutputArray dst,double scale=1, int dtype=-1);
代码
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>
#include<quickopencv.h>
#include <iostream>
void QuickDemo::operators_demo(Mat &image)
{
Mat dst;
namedWindow("原图", WINDOW_NORMAL);
imshow("原图", image);//显示结果1
//dst = image + Scalar(50, 50, 50);//给image每一个像素点加50--显示结果2
//dst = image - Scalar(50, 50, 50);//减50--显示结果3
//dst = image / Scalar(2, 2, 2);//除以50--显示结果4
//乘法
Mat m = Mat::zeros(image.size(),image.type());
m=Scalar(2, 2, 2);
multiply(image,m,dst);//乘法函数 multiply(第一张图像,第二张图像,输出图像)--显示结果5
add(image,m,dst);//加法函数
subtract(image,m,dst);//减法函数
divide(image, m, dst);//除法函数
namedWindow("...操作", WINDOW_NORMAL);
imshow("...操作", dst);
}//operators_demo
显示结果1
显示结果2
显示结果3
显示结果4
显示结果5