opencv4学习总结-图像运算

图像加减乘除

#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;
}