1. 程式人生 > >合並多個cv::Mat類型,即合並多個圖片的接口

合並多個cv::Mat類型,即合並多個圖片的接口

區域 使用 depth left img style return urn 創建

1、 cv::Mat get_merage_image(cv::Mat cur_frame) { cv::Mat image_one=cur_frame; cv::Mat image_two=cur_frame; //創建連接後存入的圖像,兩幅圖像按左右排列,所以列數+1 cv::Mat img_merge(image_one.rows,image_one.cols+ image_two.cols+1,image_one.type()); //圖像拷貝,不能用Mat中的clone和copyTo函數,單幅圖像拷貝可用,clone和copyTo不僅拷貝圖像數據,還拷貝一///些其他的信息
//而現在是將兩幅圖像的數據拷貝到一副圖像中,只拷貝圖像數據 //因此用colRange來訪問圖像的列數據colRange第一參數是起始列,是從0開始索引,而第二個參數是結束列, //從1開始索引,與我們以前使用的不同,因此,參數分別為0和image_one.cols image_one.colRange(0,image_one.cols). copyTo(img_merge.colRange(0,image_one.cols)); //第二幅圖像拷貝,中間的一行作為兩幅圖像的分割線 image_two.colRange(0,image_two.cols).copyTo( img_merge.colRange(image_one.cols+1,img_merge.cols));
return img_merge; } 2、 cv::Mat get_merage_image2(cv::Mat cur_frame) { cv::Mat img_merge; cv::Size size(cur_frame.cols + cur_frame.cols, MAX(cur_frame.rows, cur_frame.rows)); img_merge.create(size, CV_MAKETYPE(cur_frame.depth(), 3)); img_merge = cv::Scalar::all(0); cv::Mat outImg_left, outImg_right;
//2.在新建合並圖像中設置感興趣區域 outImg_left = img_merge(cv::Rect(0, 0, cur_frame.cols, cur_frame.rows)); outImg_right = img_merge(cv::Rect(cur_frame.cols, 0, cur_frame.cols, cur_frame.rows)); //3.將待拷貝圖像拷貝到感性趣區域中 cur_frame.copyTo(outImg_left); cur_frame.copyTo(outImg_right); return img_merge; }

合並多個cv::Mat類型,即合並多個圖片的接口