OperationUnsupportedError, работающая со списками clojure- java interop - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть следующий код взаимодействия open-cv:

(defn find-significant-contours [edge-img size]
    (def contours '())
    (def hierarchy (Mat. size cv/CV_8UC1))
    (def edge-img-8u (Mat. size cv/CV_8UC1))
    (cv/find-contours edge-img-8u contours hierarchy cv/RETR_TREE cv/CHAIN_APPROX_SIMPLE)
)

, где функция findContours java имеет вид:

public static void findContours​(Mat image, java.util.List<MatOfPoint> contours, Mat hierarchy, int mode, int method)

, но после выполнения (find-значительное-countours ( Mat. Size cv / CV_32FC1) img-size), я получаю ошибку:

(UnsupportedOperationException) at
   org.opencv.utils.Converters/Mat_to_vector_vector_Point (Converters.java:542).

Я думаю, это потому, что findCountours запрашивает List, а я даю '(). Я не знаю, как явно дать список. Или ошибка может быть из-за какой-то другой причины. Что я делаю не так?

1 Ответ

0 голосов
/ 02 апреля 2020

Исключение выдается из реализации последовательности Clojure, которая не поддерживает .add(...) -ing элементов для себя, поскольку она неизменна.

Вы должны передать реализацию List, которая поддерживает добавление предметов. Например (java.util.ArrayList.)

...