• Mat对象的算术运算


    Mat对象的简单算术运算

     1 Mat src1 = imread("F:/opencv4.1.0/sources/samples/data/WindowsLogo.jpg");
     2 Mat src2 = imread("F:/opencv4.1.0/sources/samples/data/LinuxLogo.jpg");
     3 if (src1.empty() || src2.empty()) {
     4     printf("could not find image");
     5     return -1;
     6 }
     7 
     8 imshow("input1", src1);
     9 imshow("input2", src2);
    10 Mat dst1;
    11 add(src1, src2,dst1);
    12 imshow("add-demo", dst1);
    13 
    14 Mat dst2;
    15 subtract(src1, src2, dst2);
    16 imshow("subtract-demo", dst2);
    17 
    18 Mat dst3;
    19 multiply(src1, src2, dst3);
    20 imshow("multiply-demo", dst3);
    21 
    22 Mat dst4;
    23 divide(src1, src2, dst4);
    24 imshow("divide-demo", dst4);

    Mat对象的加权函数addWidget

    线性混合就是指两个图片或两段视频以某种函数关系叠加呈现。

                                                              

    addWeighted原函数:

    void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1);

    第一个参数:要叠加的第一个图像Mat

    第二个参数:标识第一个参数叠加的权重

    第三个参数:表示第二个叠加的图像,他需要和第一个数组拥有同样的尺寸和通道数

    第四个参数:表示第二个叠加图像的权重

    第五个参数:输出参数,需要和前两个图像拥有同样的通道数和尺寸

    第六个参数:一个加到权重总和上的标量值(填0就好)

    第七个参数:输出阵列的深度有默认值-1, 当两张叠加图片深度相同时,参数为-1

    如函数:

     1 void mixImages() {
     2     Mat image = imread("images/alpha.png");
     3     Mat logo0 = imread("images/logo.png");
     4     Mat logo;
     5     // 缩小logo
     6     resize(logo0, logo, Size(0.5 * logo0.cols, 0.5 * logo0.rows));
     7 
     8     Mat imageROI;
     9     //在image mat中取出要打上logo的位置进行融合
    10     //方法1
    11     //imageROI = image(Rect(10, 20, logo.cols, logo.rows));
    12     //方法2
    13     imageROI = image(Range(10, 10 + logo.rows), Range(20, 20 + logo.cols));
    14     addWeighted(imageROI, 0.5, logo, 0.3, 0., imageROI);
    15 
    16     imshow("融合", image);
    17     //compression_params 为存些图片的参数
    18     vector<int> compression_params;
    19     compression_params.push_back(IMWRITE_PNG_COMPRESSION);
    20     compression_params.push_back(9);    //png格式下,默认的参数为3.
    21     try {
    22         // cv 创建的窗口无法显示透明,所以会发现显示的是jpg的图片,保存后用 window图片查看器看图就会有透明显示
    23         imwrite("addlog.jpg", image, compression_params);
    24         imwrite("addlog.png", image, compression_params);
    25     }
    26     catch (runtime_error& ex) {
    27         fprintf(stderr, "save image erro %s
    ", ex.what());
    28         return;
    29 
    30     }
    31 }
  • 相关阅读:
    [ARC074C] RGB Sequence
    [SHOI2014] 概率充电器
    CF368B Sereja and Suffixes
    CF980D Perfect Groups
    Rainbow Roads(gym101617G)(DFS序,差分)
    Educational Codeforces Round 104 (Rated for Div. 2)(A~E)
    Floor and Mod(CF1485C)(数论)
    Longest Simple Cycle(CF1476C)(线性dp)
    Factories(Gym102222G)(树形dp+背包)
    Codeforces Round #699 (Div. 2)(A,B,C,D)
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/15410175.html
Copyright © 2020-2023  润新知