未經本人允許,不得轉載
先直接上代碼,文末會有具體分析,代碼也有相應注釋。
本文是以三張圖片橫向排列拼接為例 ,其他的也是類似
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)函數,是用來設置一個操作區域的,就是說設定了這個區域然后再將圖復制到這個里面來,然后再分割第二個區域,填進去
/***********************/
