В моем андроид приложения, которое я получаю изображение из галереи в виде битового массива с чем-то вроде этогоImgproc.drawContours (....) не показывая вверх
Bitmap bitm = getMyImage("Thanks!");
и у меня есть коврик называется мат объявленным, как это :
Mat mat = new Mat(bitm.getHeight(), bitm.getWidth(), CVType.CV_8UC3);
Я пытаюсь получить контур области от образа, который я успешно получил затем сделать его обратно на исходное изображение с:
Imgproc.drawContours(mat, contours, -1, new Scalar(200,200,0), 2);
displayMat(mat);
Если я использую его так, он работает, но контуры рисуются на пустом изображении, которого я не хочу. Я хочу, чтобы это было нарисовано на исходном изображении. Если я использую
Utils.bitmapToMat(bitm, mat);
перед предыдущим фрагментом кода, отображаемое изображение только preprossed изображения без «Ничьих» контуров. Зачем?
Я еще не работал с android opencv, но я думаю, что где-то читал, что они используют изображения 8UC4?!? поэтому «новый Scalar (200,200,0)» нуждается в альфа-значении. В противном случае он использует значение alpha по умолчанию, которое будет прозрачным, я думаю. Поэтому поставьте 'Utils.bitmapToMat (битm, мат);' перед вашим кодом и измените на «Scalar (200,200,0,255)» или «Scalar (200,200,0,0)», что бы означало быть непрозрачным значением альфа. – Micka
@ Мичка Спасибо! Именно по этой причине он не появлялся. Если вы оставите свой комментарий в качестве ответа, я обязательно его примечу :) – Olumide