一、两张图像的像素比较
比较最大最小
最小:
min(lnputArray src1, InputArray src2, outputArray dst)
最大:
max(lnputArray src1, InputArray src2, outputArray dst)
src1 :第一个图像矩阵,可以是任意通道数的矩阵。
src2:第二个图像矩阵,尺寸和通道数以及数据类型都需要与src1一致。
dst:保留对应位置较大(较小)灰度值后的图像矩阵,尺寸、通道数和数据类型与src1一致。
minMaxLoc(lnputArray src,double* minVal, double* maxval=0, Point *minLoc=0, Point *maxLoc=0, lnputArray mask = noArray())
src:输入单通道矩阵
minVal:指向最小值的指针,如果不需要,则使用NULL。
maxVal:指向最大值的指针,如果不需要,则使用NULL。
minLoc:指向最小值位置的指针,如果不需要,则使用NULL。
maxLoc:指向最大值位置的指针,如果不需要,则使用NULL。
mask:掩码矩阵,用于标记寻找上述四个值的范围,参数默认值noArray(),表示寻找范围是矩阵中所有数据。
以上函数的使用实例如下:
//读入两张图片
Mat src1 = imread("图片1.png");
Mat src2 = imread("图片2.png");
Mat Min, Max;
//比较两张图片中的最小、大值
min(src1, src2, Min);
max(src1, src2, Max);
//将图像转化为灰度图像
Mat gray;
cvtColor(src1, gray, COLOR_BGR2GRAY);
//定义要使用的变量
double minVal, maxVal;
Point MinLoc, MaxLoc;
minMaxLoc(gray, &minVal, &maxVal, &MinLoc, &MaxLoc);
二、图像像素逻辑运算
如果图像的数据类型为二值类型,则直接进行逻辑运算,如果图像为0-255数据类型,则先将数据转换为8为2进制数据类型之后再逻辑运算。
非运算只针对单幅图像进行操作:
bitwise2not(lnputArray src,outputArray dst, lnputArray mask = naArray())
与运算:
bitwise_and(InputArray src1, lnputArray src2,outputArray dst, lnputArray mask = noArray())
或运算:
bitwise_or(InputArray src1, lnputArray src2,outputArray dst, lnputArray mask = noArray())
异或运算:
bitwise_xor(InputArray src1, lnputArray src2,outputArray dst, lnputArray mask = noArray())