Как получить доступ к пикселям внутри области контура и написать обратно в исходное изображение, используя OpenCV в Android

85
7

Я написал некоторый код, который будет возвращать контуры из реального изображения. Я хотел бы получить доступ к каждому контуру, выполнить некоторые манипуляции с изображением на уровне пикселей и записать обратно изображение.

Есть ли способ получить доступ к области контура индивидуально и выполнить итерации по отдельным пикселям в области и выполнить обратную запись в изображение.

      Rect rect = Imgproc.boundingRect(matOfPoint);
Mat roiBox = rgbaMatrix.submat(rect)

Это возвращает подматрицу, которая также имеет пиксели, которые не являются частью контура.

Пожалуйста, перейдите по этой ссылке, чтобы увидеть скриншот обнаружения контуров

спросил(а) 2017-07-03T17:13:00+03:00 3 года назад
1
Решение
57

Я нашел способ, который всегда будет содержать контекст основной матрицы, так как @AlexanderReynolds предложил маскировку - единственный способ извлечь точную область.

Rect rect = Imgproc.boundingRect(matOfPoint);
Mat subMat = new Mat(mRgba,rect);
Mat zeroMat = Mat.zeros(subMat.size(),subMat.type());
zeroMat.copyTo(subMat);

Это копирует нулевую матрицу в исходную матрицу

ответил(а) 2017-07-04T18:34:00+03:00 2 года, 12 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема