2013-11-19 4 views
9

Я хочу объединить несколько cv::Mat, когда я использую mat1.push_back(mat2) его добавить mat2 до конца mat1 по вертикали, есть способ сделать это горизонтально? Единственный вариант, я могу думать о том, что делает каждый cv::Mat в cv::RotatedRect, повернуть его, создавая новую Mat, сливаясь, вращая все, в конце концов таким же образом, но это звучит бесцельно долго, если есть другой способСлияние резюме :: Mat горизонтально

ответ

14

Взгляните на hconcat и vconcat.

использование:

Mat M1,M2,HM,VM; 
// M1 and M2 - source matrices 
// MH,MV - results 
... 

hconcat(M1,M2,HM); // horizontal concatenation 
vconcat(M1,M2,VM); // vertical concatenation 

Позаботьтесь, эти методы не документированы.

+1

Вот отчет OpenCV вопрос для него: http://code.opencv.org/issues/1215 – Ela782

+0

Minor опечатка в комментарии к строке 3 (HM и VM вместо MH и MV), но не влияют на результаты :) – Ruchir

+0

Обратите внимание, что эти методы теперь документированы: [hconcat] (http://docs.opencv.org/trunk/d2/de8/group__core__array.html#gaf9771c991763233866bf76b5b5d1776f) и [vconcat] (http: // docs .opencv.org/багажник/d2/de8/group__core__array.html # ga744f53b69f6e4f12156cdde4e76aed27). – beaker

0

Существует очень простой способ отображения двух изображений бок о бок. Можно использовать следующую функцию, которая предоставляется opencv.

Mat image1, image2; 
hconcat(image1,image2,image1);//Syntax-> 
hconcat(source1,source2,destination); 

Эта функция также может использоваться для копирования набора столбцов из изображения в другое изображение.

Mat image; 
Mat columns=image.colRange(20,30); 
hconcat(image,columns,image); 
Смежные вопросы