最近做實驗需要對比實驗結果,需要將幾張圖片拼在一起,直觀對比。
嘗試用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); }
效果:

參考:
