OpenCV學習5-----使用Mat合並多張圖像


最近做實驗需要對比實驗結果,需要將幾張圖片拼在一起,直觀對比。

嘗試用OpenCV解決。

核心思想其實是   聲明一個足夠大的,正好容納下那幾張圖片的mat,然后將拼圖依次copy到大圖片相應的位置。

void mymerge()
{
    string  path = "E:\\laboratory\\dataset\\synthesisdata\\bvhtransformdepthacquistion\\action7\\people1\\";
    
    vector<Mat>input(20);
    for (int i = 0; i < 20;i++)
    {
        stringstream ss;
        ss << path << i << ".jpg";
        input[i] = imread(ss.str());        
    }

    Size bigsize(input[0].cols * 10, input[0].rows*2);//合並后圖片size
        
    vector<Mat>temp(20);

    Mat mergefinal;
    mergefinal.create(bigsize, CV_MAKETYPE(input[0].depth(), 3));//rgb 3通道
    mergefinal = Scalar::all(0);

    for (int i = 0; i < 20;i++)
    {
        if (i<10)temp[i] = mergefinal(Rect(i*input[0].cols, 0, input[0].cols, input[0].rows));
        else temp[i] = mergefinal(Rect((i - 10)*input[0].cols, input[0].rows, input[0].cols, input[0].rows));
        input[i].copyTo(temp[i]); //copy圖片到對應位置
    }

    imshow("merge", mergefinal);
    imwrite("merge.jpg", mergefinal);

    waitKey(0);
}

 

效果:

 

 

 

參考:

http://blog.csdn.net/zuiyuchenfeng/article/details/9141051


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM