zoukankan      html  css  js  c++  java
  • 使用opencv自带的融合函数

    [wiki,blog]使用opencv自带的融合函数

    [wiki,blog]使用opencv自带的融合函数
    /*M///////////////////////////////////////////////////////////////////////////////////////
    //
    //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
    //
    //  By downloading, copying, installing or using the software you agree to this license.
    //  If you do not agree to this license, do not download, install,
    //  copy or use the software.
    //
    //
    //                        Intel License Agreement
    //                For Open Source Computer Vision Library
    //
    // Copyright (C) 2000, Intel Corporation, all rights reserved.
    // Third party copyrights are property of their respective owners.
    //
    // Redistribution and use in source and binary forms, with or without modification,
    // are permitted provided that the following conditions are met:
    //
    //   * Redistribution's of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //
    //   * Redistribution's in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //
    //   * The name of Intel Corporation may not be used to endorse or promote products
    //     derived from this software without specific prior written permission.
    //
    // This software is provided by the copyright holders and contributors "as is" and
    // any express or implied warranties, including, but not limited to, the implied
    // warranties of merchantability and fitness for a particular purpose are disclaimed.
    // In no event shall the Intel Corporation or contributors be liable for any direct,
    // indirect, incidental, special, exemplary, or consequential damages
    // (including, but not limited to, procurement of substitute goods or services;
    // loss of use, data, or profits; or business interruption) however caused
    // and on any theory of liability, whether in contract, strict liability,
    // or tort (including negligence or otherwise) arising in any way out of
    // the use of this software, even if advised of the possibility of such damage.
    //
    //M*/
    #include "stdafx.h"
    #include "test_precomp.hpp"
    #include <opencv2/core.hpp>
    #include <opencv2/highgui.hpp>
     
    using namespace cv;
    using namespace std;
     
    int main()
    {
        Mat image1 = imread( "c:\3.jpg");
        Mat image2 = imread( "c:\4.jpg");
        ASSERT_EQ(image1.rows, image2.rows); ASSERT_EQ(image1.cols, image2.cols);
     
        Mat image1s, image2s;
        image1.convertTo(image1s, CV_16S);
        image2.convertTo(image2s, CV_16S);
     
        Mat mask1(image1s.size(), CV_8U);
       /* mask1(Rect(0, 0, mask1.cols/2, mask1.rows)).setTo(255);
        mask1(Rect(mask1.cols/2, 0, mask1.cols - mask1.cols/2, mask1.rows)).setTo(0);*/
                    mask1(Rect(0,0, mask1.cols , mask1.rows)).setTo(0);
                    mask1(Rect(0, 0, mask1.cols, mask1.rows/2)).setTo(255);
                    
     
        Mat mask2(image2s.size(), CV_8U);
       /* mask2(Rect(0, 0, mask2.cols/2, mask2.rows)).setTo(0);
        mask2(Rect(mask2.cols/2, 0, mask2.cols - mask2.cols/2, mask2.rows)).setTo(255);*/
                    mask2(Rect(0,0, mask2.cols , mask2.rows)).setTo(255);
                    mask2(Rect(0, 0, mask2.cols, mask2.rows/2)).setTo(0);
     
     
        detail::MultiBandBlender blender( false, 5);
     
        blender.prepare(Rect(0, 0, max(image1s.cols, image2s.cols), max(image1s.rows, image2s.rows)));
        blender.feed(image1s, mask1, Point(0,0));
        blender.feed(image2s, mask2, Point(0,0));
     
        Mat result_s, result_mask;
        blender.blend(result_s, result_mask);
        Mat result; result_s.convertTo(result, CV_8U);
     
                    cv::imshow( "result",result);
                    cv::imwrite( "baboon_lena.jpg",result);
                    cv::waitKey();
     
    }
    实现了速度很快,效果很好的mulitband的结果,但是对于实际的项目也是有不足的,就是只能输入两幅图像。如果需要用于实际的项目,就需要进行修正,使得其能够一下子用于许多图像。
      





  • 相关阅读:
    设计模式-解释器模式
    安卓运行环境(四)
    安卓创建应用窗口(三)
    微型 ORM 的第二篇 DapperLambda性能测试[Dapper比较篇]
    微型 ORM 的第一篇 DapperLambda发布
    visual studio 2013 使用IIS Express附加调试MVC5
    数据库常用查询语句写法(优化)
    Windows Server 2008通过计划任务定时执行bat文件
    第一章 Memcached安装
    第四章 LINQ to SQL基本用法
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/4492107.html
Copyright © 2011-2022 走看看