Нет метода get, обеспечивающего доступ к массиву - ошибка при присвоении новых значений матрице - PullRequest
1 голос
/ 28 мая 2020

Я работаю с opencv на android для разработки приложения сегментации изображений, но особенно с алгоритмом водораздела. Я открываю изображение и создаю маску того же размера, что и изображение, и передаю 0 для всех строк и столбцов этой маски. Однако на следующем шаге, который заключается в добавлении новых значений для определенных строк и столбцов этой матрицы, у меня есть ошибка: нет метода get, обеспечивающего доступ к массиву. Таким образом, я не могу передать новые значения в матрица, может ли кто-нибудь помочь мне с этим?

Код:

   // Load the image
   val srcOriginal = Imgcodecs.imread(currentPhotoPath)

    // Create a blank image of zeros (same dimension as img)
    val markers = Mat.zeros(srcOriginal.rows(), srcOriginal.cols(), CvType.CV_32F)

    // Example assigning a new value to a matrix index
    markers.put(0,0,255)

Ошибка:

enter image description here

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Библиотека OpenCV в java не принимает входной Int в качестве параметра. Вы можете видеть в объявлении метода https://docs.opencv.org/3.4/javadoc/org/opencv/core/Mat.html#get (int, int, int% 5B% 5D) .

Передайте IntArray для значений RGB вместе со значениями row и col:

// Replace row and col with your values
markers.put(row, col, intArrayOf(0,0,255))
1 голос
/ 28 мая 2020

попробуйте следующее:

markers.put(0,0,X);

где x - массив, содержащий значения пикселей (потому что это может быть RGB, СЕРЫЙ МАСШТАБ и т. Д. c). В Java вы можете использовать Mat :: get () и методы Mat :: put ().

Подробнее читайте здесь.

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