代码
#include "mainwindow.h"
#include <QApplication>
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Mat img1=imread("D:\\1\\67.png");
Mat img2=imread("D:\\1\\99.png");
if(img1.empty()){
cout<<"no 1.jpg read!"<<endl;
return 0;
}
Mat dst;
/*在此处写入处理代码*/
............................
//比较原始结果和输出结果
cout<<"image1 : "<<int(img1.at<Vec3b>(10,10)[0])<<endl;
cout<<"image2 : "<<int(img2.at<Vec3b>(10,10)[0])<<endl;
cout<<"dst : "<<int(dst.at<Vec3b>(10,10)[0])<<endl;
imshow("image1",img1);
imshow("image2",img2);
imshow("dst",dst);
return a.exec();
}
图像算数运算
图像加法
常用函数: + add() addWeighted()
1. +
dst=img1+img2;
2. add()
add(img1,img1,dst);
3. addWeighted()
addWeighted(img1,0.5,img2,0.5,0,dst);
图像减法
常用函数: - substract absdiff
1. -
dst=img1-img2;
2. substract
subtract(img1,img2,dst);
3. absdiff
/*这个函数可以用于做缺陷检测*/
absdiff(img1,img2,dst);
函数区别
- substract如果值小于0,将值置为0;
absdiff如果值小于0,将值取反
注意:图像加减法中,图像的尺寸必须相同
图像乘除法
/*图像乘法*/
dst=5*img1;
/*图像除法*/
dst=img1/5;
图像逻辑运算
图像相与
/*图像相与*/
bitwise_and(img1,img2,dst);
图像相或
/*图像或运算*/
bitwise_or(img1,img2,dst);
图像非
/*图像取反*/
bitwise_not(img1,dst);
图像异或
/*图像异或*/
bitwise_xor(img1,img2,dst);