简单来说就是,声明一个大的Mat 作为最后显示的窗口,再把两个图片复制进去,注意的是两个图片的类型要一样。

1.读取原图,显示

2.按照0通道读取,转换成灰度图,并保存

3.按照1通道读取灰度图

4.一个窗口,两张图片

完整代码

#include<opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;



void liang(Mat &dst1, Mat&dst2, Mat&dst3)
{
    int cols = dst1.cols + 5 + dst2.cols;
    int rows = dst1.rows;

    dst3.create(rows,cols, dst1.type());

    dst1.copyTo(dst3(Rect(0, 0, dst1.cols, dst1.rows)));
    dst2.copyTo(dst3(Rect(dst1.cols, 0, dst2.cols, dst2.rows)));

    imshow("新", dst3);
    waitKey(0);
}
int main()
{
    Mat img1, img2, img3;
    img1 = imread("猫1.jpg", 1);
    imshow("img1", img1);
    waitKey(0);

    img2 = imread("猫1.jpg", 0);
    imwrite("灰度图.jpg", img2);

    img3 = imread("灰度图.jpg", 1);
    Mat da;
    liang(img1, img3, da);
}