图像加减乘除
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src1 = imread("E:/opencv_source/opencv/sources/samples/data/WindowsLogo.jpg");
Mat src2 = imread("E:/opencv_source/opencv/sources/samples/data/LinuxLogo.jpg");
imshow("src1", src1);
imshow("src2", src2);
//加法
Mat dst1;
add(src1, src2, dst1);
imshow("add", dst1);
//减法
Mat dst2;
subtract(src1, src2, dst2);
imshow("subtract", dst2);
//乘法
Mat dst3;
multiply(src1, src2, dst3);
imshow("multiply", dst3);
//除法
Mat dst4;
divide(src1, src2, dst4);
imshow("divide", dst4);
waitKey(0);
destroyAllWindows();
return 0;
}
改变图像亮度
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("E:/opencv_source/opencv/sources/samples/data/chicky_512.png");
imshow("src", src);
//改变图像亮度
Mat black = Mat::zeros(src.size(), src.type());
black = Scalar(50, 50, 50);
Mat dst;
add(src, black, dst);
imshow("dst1", dst);
addWeighted(src, 1, black, 1, 20, dst);
imshow("dst2", dst);
waitKey(0);
destroyAllWindows();
return 0;
}
图像位操作
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("E:/opencv_source/opencv/sources/samples/data/chicky_512.png");
imshow("src", src);
//设置mask
Mat mask = Mat::zeros(src.size(), CV_8UC1);
int h = src.rows / 2;
int w = src.cols / 2;
for (int row = 0; row < h; row++)
{
for (int col = 0; col < w; col++)
{
mask.at<uchar>(row, col) = 255;
}
}
//取反
Mat dst1;
bitwise_not(src, dst1, mask);
imshow("not", dst1);
//与
Mat dst2;
bitwise_and(src, src,dst2, mask);
imshow("and", dst2);
//或
Mat dst3;
bitwise_or(src, src,dst3, mask);
imshow("or", dst3);
waitKey(0);
destroyAllWindows();
return 0;
}