Opencv實現多幅圖片拼接在一起


未經本人允許,不得轉載

先直接上代碼,文末會有具體分析,代碼也有相應注釋。

本文是以三張圖片橫向排列拼接為例 ,其他的也是類似

IplImage* paletteImageRam1, paletteImageRam2, paletteImageRam3;   //此處是定義了三個圖片,實際使用時應當載入自己的三幅圖片

//將三個圖片拼接在一起
double width,height;
width = double(paletteImageRam1->width) *3.0;   //第一幅圖片的寬度乘以3就是拼接完的圖像寬度,此處假設三張圖的寬高都一樣,實際使用可以將各自圖像的寬度相加
height = double(paletteImageRam1->height);        //第一幅圖像的高度

IplImage* des = cvCreateImage(cvSize(width,height), paletteImageRam1->depth, paletteImageRam1->nChannels);   //生成一個三幅拼接用的容器圖片
cvSetImageROI(des, cvRect(0, 0,paletteImageRam1->width, height)); //設置容器圖片中感興趣的部分,前兩個左邊0,0代表感興趣的區域的起點,后兩個代表感興趣區域的寬高                                                 
cvCopy(paletteImageRam1, des);      //將第一幅圖像放到感興趣的區域里面,也就是第一個方格
cvResetImageROI(des);                   
cvSetImageROI(des, cvRect(paletteImageRam1->width, 0,paletteImageRam1->width,height));
cvCopy(paletteImageRam2, des);
cvResetImageROI(des);
cvSetImageROI(des, cvRect(paletteImageRam1->width*2, 0,paletteImageRam1->width,height));
cvCopy(paletteImageRam3, des);
cvResetImageROI(des);

//des就是最后拼接得到的圖像

/************************/

// opencv里面cvSetImageROI(感興趣的區域的起點x,感興趣的區域的起點y,感興趣的區域寬度w,感興趣的區域高度h)函數,是用來設置一個操作區域的,就是說設定了這個區域然后再將圖復制到這個里面來,然后再分割第二個區域,填進去

/***********************/

 


免責聲明!

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



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