Android OpenCV копирует ROI в часть большего изображения - PullRequest
0 голосов
/ 23 апреля 2019

Я получаю мат (320x480) с камеры телефона.Затем мне нужно обработать часть этого кадра.Для этого я использую ROI:

mat2 = new Mat(width, 175, CvType.CV_8SC3);
Rect roi = new Rect(75, 0, 175, 320);
mat2 = new Mat(mat1, roi);

Теперь я хочу создать новый мат размером 320х480 с черным фоном.Как мне это сделать?

Затем я хочу скопировать обработанную область интереса в новый коврик в том же месте, где он был в первом коврике.Как мне это сделать?

Я использую OpenCV 3.4.6 и Android Studio.

Заранее спасибо

1 Ответ

0 голосов
/ 24 апреля 2019

Вам просто нужно submat() ROI от исходного Mat (кадр вашей камеры), а затем обработать submat как обычный Mat, но будьте осторожны, чтобы не клонировать sumbmat если хотите, чтобы оригинал получил эффект.

Обновление по комментарию:

Mat originalMat = someMat;
Mat blackMat = Mat.zeros(size, CvType.CV_8UC1); // it is your black mat
// create a submat from the original mat, and clone it
Mat roiMat = originalMat.submat(rect).clone();

..... // do what you want with roiMat

// now copy the result to the original mat
Mat dst = originalMat.submat(rect); // do not clone this submat
roiMat.copyTo(dst);
// done!
...