Ошибка создания матрицы с нулями в kotlin с использованием Mat.zeros - PullRequest
1 голос
/ 29 мая 2020

Я работаю над разработкой приложения с использованием opencv. Я загружаю изображение и назначаю новую матрицу того же размера, что и исходное изображение, но в этой матрице мне нужно заполнить все строки и столбцы нулем. Однако функция Mat.zeros не присваивает 0 в моей матрице и у меня есть вывод, заполненный значениями: [D @ 13a5b9d, [D @ f3978b1, [D @ 30c17d0 ...] О, и мне нужно, чтобы это была матрица типа Mat (), потому что я буду работать с opencv. Может ли кто-нибудь помочь мне решить эту ошибку? Код:

val srcOriginal = Imgcodecs.imread(currentPhotoPath)

val markers = Mat.zeros(srcOriginal.rows(), srcOriginal.cols(), CvType.CV_32S)

for(x in 0..markers.rows()) {
   for(y in 0..markers.cols()) {
      Log.i("teste", markers[x,y])
  }
}

Ожидаемый результат:

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]

вывод:

enter image description here

1 Ответ

1 голос
/ 03 июня 2020

Ваш код фактически создает матрицу, заполненную правильными значениями. Дело в том, что markers[x,y] возвращает значение типа DoubleArray, а не Double, и, следовательно, вы не можете видеть фактическое содержимое. Если вы распечатаете значения в следующей строке, вы увидите, что в матрице есть нули:

Log.i("teste", markers[x,y].contentToString())

// Alternative using the Java Arrays class
Log.i("teste", Arrays.toString(markers[x,y]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...