OpenCV学习第六篇:图像混合

好快啊,都到了第六篇了,虽然以前学过图形学,学过shader,感觉接触这个也不是很吃力!加油!
主要思想:
这里写图片描述
这里主要是图像混合的几种手段,其实和shader中的是一样的,没多大区别:
方法一:
使用: addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
方法二:
使用: add(src1, src2, addmap, Mat());
方法三
使用: multiply(src1, src2, mulmap, (1-alpha), -1);
其实在shader和c#中都可以用类似的方法,只是代码的写法不一样,思想都是差不多的!
shader:
Color col1 = float4(1,1,1,1);
Color col2 = float4(0.8,0.2,0.5,0);
col1+col2整体颜色会偏亮,col1*col2整体颜色会偏暗
上面shader的大家可以略过,只是想到了,联系起来而已
下面是完整的代码:

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    Mat src1,src2,dst,addmap,mulmap;
    src1 = imread("F:/识图/测试1.JPG");
    src2 = imread("F:/识图/测试2.JPG");
    if (src1.empty())
    {
        printf("could not found image!");
    }
    if (src2.empty())
    {
        printf("could not found image!");
    }
    double alpha = 0.5;
    if (src1.rows==src2.rows&&src1.cols==src2.cols&&src1.type()==src2.type()) {
        addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
        add(src1, src2, addmap, Mat());
        multiply(src1, src2, mulmap, (1-alpha), -1);
        imshow("1", src1);
        imshow("2", src2);
        imshow("3", dst);
        imshow("4", addmap);
        imshow("5", mulmap);
    }
    else {
        printf("could not blend images");
        return -1;
    }
    waitKey(0);
    return 0;
}

这里是生成的效果图:
这里写图片描述
望大家一起加油,一起进步!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值