opencv-four arithmetic operations in images (image mixing)

principle

Image blending is actually an operation between pixels,
so it is required

Two images are required to be the same size

API

add(src1, src2, dst=None, mask=None, dtype=None)        // +
multiply(src1, src2, dst=None, scale=None, dtype=None)	// -
subtract(src1, src2, dst=None, mask=None, dtype=None)	// x
divide(src1, src2, dst=None, scale=None, dtype=None)	// /

Code

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
    
    
	Mat src1, src2, dst;
	src1 = imread("C:/Users/86176/Pictures/pics/baboon.tiff");
	src2 = imread("C:/Users/86176/Pictures/pics/peppers(1).tiff");
	if (!src1.data) {
    
    
		cout << "could not load image which named boy.png..." << endl;
		return -1;
	}
	if (!src2.data) {
    
    
		cout << "could not load image named girl.png..." << endl;
		return -1;
	}

	double alpha = 0.5;
	if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
    
    
		
		add(src1, src2, dst, Mat());
		//multiply(src1, src2, dst, Mat());
		//subtract(src1, src2, dst, 1.0);
		//divide(src1, src2, dst, 1.0);

		imshow("src1", src1);
		imshow("src2", src2);
		imshow("dst", dst);
	}
	else {
    
    
		printf("could not blend images , the size of images is not same...\n");
		return -1;
	}

	waitKey(0);
	return 0;
}

effect

src1
Insert picture description here

src2
Insert picture description here

plus

Insert picture description here

Less

Insert picture description here

Multiply

Insert picture description here

except

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_28258885/article/details/112543420