OpenCV 线性混合(4)

 

带滚动条的线性混合示例:

 

#include "stdafx.h"

#include<iostream>

#include<thread>

#include<vector>

#include <opencv2/core/core.hpp>

#include <opencv2/contrib/contrib.hpp>

#include <opencv2/highgui/highgui.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <opencv2/objdetect/objdetect.hpp>

 

using namespace cv;

using namespace std;

 

int g_slider_position = 0;

double alpha = 0.5;

double beta;

Mat src1, src2, dst;

 

void onTrackingbarSlide(int pos)

{

    alpha = (double)pos / 100;

    beta = (1.0 - alpha);

    addWeighted(src1, alpha, src2, beta, 0.0, dst);

    imshow("Linear Blend", dst);

}

 

int _tmain(int argc, _TCHAR* argv[])

{

    double input;

 

    /// Ask the user enter alpha

    std::cout << " Simple Linear Blender " << std::endl;

    std::cout << "-----------------------" << std::endl;

    std::cout << "* Enter alpha [0-1]: ";

    std::cin >> input;

 

    /// We use the alpha provided by the user iff it is between 0 and 1

    if (alpha >= 0 && alpha <= 1)

    {

        alpha = input;

    }

 

    /// Read image ( same size, same type )

    src1 = imread("E:\\myImage\\sql.png");

    src2 = imread("E:\\myImage\\network26.png");

 

    if (!src1.data) { printf("Error loading src1 \n"); return -1; }

    if (!src2.data) { printf("Error loading src2 \n"); return -1; }

 

    /// Create Windows

    namedWindow("Linear Blend", 1);

 

    cvCreateTrackbar("Linear Blend", "Linear Blend", &g_slider_position, 100, onTrackingbarSlide);

 

    beta = (1.0 - alpha);

    addWeighted(src1, alpha, src2, beta, 0.5, dst);

 

    imshow("Linear Blend", dst);

 

    waitKey(0);

    return 0;

}

 

 

原文:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/adding_images/adding_images.html#adding-images

posted @ 2015-11-10 18:14  _DN  阅读(361)  评论(0编辑  收藏  举报