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;
}

這裏是生成的效果圖:
這裏寫圖片描述
望大家一起加油,一起進步!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章