Из того, что я прочитал онлайн , когда вы создаете субмат в OpenCV, он разделяет буфер изображения родительского мата:
Однако, похоже, что это не то поведение, которое я получаю при использовании OpenCV из Java на Android.
Вот фрагмент кода, который создает подматрицу, а затем заполняет ее сплошным синим цветом. Однако исходный мат остается нетронутым при визуализации на экране:
//Create submat
submat1 = input.submat(new Rect(sub1pointA, sub1pointB));
//Fill submat with solid color
Imgproc.rectangle(
submat1 ,
new Point(0,0),
new Point(submat1.width(), submat1.height()),
new Scalar(0, 0, 255), -1);
Если, однако, я изменю вызов на rectangle()
для работы на мате input
, тоЯ действительно получаю сплошной синий прямоугольник на экране. Что дает? Я что-то упускаю из виду или субмат не разделяет буфер со своим родителем при использовании OpenCV для Java?