热门搜索 :
考研考公
您的当前位置:首页正文

OpenCV3.0之初级图片混合(笔记)

来源:东饰资讯网
       Mat image = imread("picture.jpg", 199);
    Mat logo = imread("picture_logo.jpg");
    //载入后先显示
    namedWindow("【0】原画图");
    imshow("【0】原画图", image);

    namedWindow("【1】logo图");
    imshow("【1】logo图", logo);

    // 定义一个Mat类型,用于存放,图像的ROI
    Mat imageROI;
    //方法一
    imageROI = image(Rect(800, 350, logo.cols, logo.rows));
    //方法二
    //imageROI= image(Range(350,350+logo.rows),Range(800,800+logo.cols));
    // 将logo加到原图上
    addWeighted(imageROI, 0.5, logo, 0.3, 0., imageROI);
    //显示结果
    namedWindow("【2】原画+logo图");
    imshow("【2】原画+logo图", image);

效果图如下:

logo.jpg
picture.jpg

eg:

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
int main( int argc, char** argv )
{

   double alpha = 0.5; double beta; double input;

   Mat src1, src2, dst;

   /// 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("d:/images/LinuxLogo.jpg");
   src2 = imread("d:/images/WindowsLogo.jpg");

   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);
   beta = ( 1.0 - alpha );
   addWeighted( src1, alpha, src2, beta, 0.0, dst);
   imshow( "Linear Blend", dst );
   waitKey(0);
   return 0;
}
Top