Объедините два изображения Mat в один

У меня проблема. У меня есть изображение. Затем я должен разбить изображение на две равные части. Я сделал это так (код скомпилирован, все хорошо):

Mat image_temp1 = image(Rect(0, 0, image.cols, image.rows/2)).clone(); Mat image_temp2 = image(Rect(0, image.rows/2, image.cols, image.rows/2)).clone(); 

Затем я должен самостоятельно менять каждую часть и, наконец, сливаться в одну. Я понятия не имею, как это сделать правильно. Как я должен объединить эти 2 части изображения в одно изображение?
Пример: http://sofru.miximages.com/c%2B%2B/CLDK7.jpg

Существует несколько способов сделать это, но лучшим способом я нашел использование cv::hconcat(mat1, mat2, dst) для горизонтального слияния или cv::vconcat(mat1, mat2, dst) для вертикали.

Не забудьте позаботиться о пустом корпусе с матричной матрицей!

Кажется, что cv :: Mat :: push_back – именно то, что вы ищете:

C ++: void Mat :: push_back (const Mat & m): добавляет элементы в нижнюю часть матрицы.

 Parameters: m – Added line(s). 

Методы добавляют один или несколько элементов в нижней части матрицы. Когда elem является Mat, его тип и количество столбцов должны быть такими же, как в матрице контейнера.

При желании вы можете создать новый cv::Mat соответствующего размера и разместить части изображения прямо в нем:

 Mat image_temp1 = image(Rect(0, 0, image.cols, image.rows/2)).clone(); Mat image_temp2 = image(Rect(0, image.rows/2, image.cols, image.rows/2)).clone(); ... cv::Mat result(image.rows, image.cols); image_temp1.copyTo(result(Rect(0, 0, image.cols, image.rows/2))); image_temp2.copyTo(result(Rect(0, image.rows/2, image.cols, image.rows/2)); 

Как насчет этого:

 Mat newImage = image.clone(); Mat image_temp1 = newImage(Rect(0, 0, image.cols, image.rows/2)); Mat image_temp2 = newImage(Rect(0, image.rows/2, image.cols, image.rows/2)); 

Не используя clone() для создания временных изображений, вы неявно newImage когда вы изменяете временные изображения без необходимости их повторного объединения. После изменения image_temp1 и image_temp2 , newImage будет точно таким же, как если бы вы разделили, модифицировали, а затем объединили субимажи.