根据拼接方向的不同,分为concat()和hconcat()

    1. #include <opencv2\opencv.hpp>
    2. #include <iostream>
    3. using namespace std;
    4. using namespace cv;
    5. int main()
    6. {
    7. //矩阵数组的横竖连接
    8. Mat matArray[] = { Mat(1, 2, CV_32FC1, cv::Scalar(1)),
    9. Mat(1, 2, CV_32FC1, cv::Scalar(2)) };
    10. Mat vout, hout;
    11. vconcat(matArray, 2, vout);
    12. cout << "图像数组竖向连接:" << endl << vout << endl;
    13. hconcat(matArray, 2, hout);
    14. cout << "图像数组横向连接:" << endl << hout << endl;
    15. //矩阵的横竖拼接
    16. Mat A = (cv::Mat_<float>(2, 2) << 1, 7, 2, 8);
    17. Mat B = (cv::Mat_<float>(2, 2) << 4, 10, 5, 11);
    18. Mat vC, hC;
    19. vconcat(A, B, vC);
    20. cout << "多个图像竖向连接:" << endl << vC << endl;
    21. hconcat(A, B, hC);
    22. cout << "多个图像横向连接:" << endl << hC << endl;
    23. //读取4个子图像,00表示左上角、01表示右上角、10表示左下角、11表示右下角
    24. Mat img00 = imread("lena00.png");
    25. Mat img01 = imread("lena01.png");
    26. Mat img10 = imread("lena10.png");
    27. Mat img11 = imread("lena11.png");
    28. if (img00.empty() || img01.empty() || img10.empty() || img11.empty())
    29. {
    30. cout << "请确认图像文件名称是否正确" << endl;
    31. return -1;
    32. }
    33. //显示4个子图像
    34. imshow("img00", img00);
    35. imshow("img01", img01);
    36. imshow("img10", img10);
    37. imshow("img11", img11);
    38. //图像连接
    39. Mat img, img0, img1;
    40. //图像横向连接
    41. hconcat(img00, img01, img0);
    42. hconcat(img10, img11, img1);
    43. //横向连接结果再进行竖向连接
    44. vconcat(img0, img1, img);
    45. //显示连接图像的结果
    46. imshow("img0", img0);
    47. imshow("img1", img1);
    48. imshow("img", img);
    49. waitKey(0);
    50. return 0;
    51. }