У меня возникли проблемы с использованием метода setTo(). Мой код выглядит следующим образом:opencv настройка подматрицы Mat на другую Mat
ArrayList<Mat> someImagesOfSameSize = new ArrayList<Mat>;
someImagesOfSameSize.add(img1);
someImagesOfSameSize.add(img3);
someImagesOfSameSize.add(img3);
Mat combinedImagesOfSameSize = new Mat(new Range(0,30), new Range(0,100*someImagesOfSameSize.size()),3);
Mat tempImage = null;
for(int i = 0; someImagesOfSameSize.size();i++){
tempImage = someImagesOfSameSize.get(i);
combinedImagesOfSameSize.submat(new Range(0,30), new Range(i*100,(i+1)*100)).setTo(tempImage)
}
Это дает мне OpenCV Error:
* OpenCV Ошибка: не удалось (Assertion checkScalar (значение, тип(), _value.kind(), _InputArray :: MAT)) в
неизвестная функция, файл ...... \ src \ opencv \ modules \ core \ src \ copy.cpp, строка 348 Исключение в потоке "main" CvException [org.opencv.core.CvException: .. .... \ src \ opencv \ modules \ core \ src \ copy.cpp: 348: error: (-215) checkScalar (значение, тип(), _value.kind(), _InputArray :: MAT)] в org. opencv.core.Mat.n_setTo (Нативный метод) на org.opencv.core.Mat.setTo (Mat.java:2164) *
Что я хочу сделать просто: Возьмите одно изображение за раз, запишите его в комбинированное изображение, сдвиньте столбцы вправо и так далее. Поскольку они имеют одинаковый размер, это должно быть возможно. Может ли кто-нибудь указать, почему это не работает?
Я нашел виноват. Комбинированный Мат должен быть инициализирован следующим образом: «Mat combinationImagesOfSameSize = new Mat (новый диапазон (0,30), новый диапазон (0,100 * someImagesOfSameSize.size()), CvType.CV_8UC3); Мысль, вставляющая 3, читает 3-канальный png. – kiltek
Вы можете [отправить и принять] (http://meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-those-where-i-knew-the-answer-before -заполнение) ваше решение в качестве ответа. Это облегчает вам описание того, что ваша проблема решена. – Aurelius
Я приму ответ в течение 2 дней – kiltek