Сшивание JavaCV

Я пытаюсь сшить несколько изображений с помощью JavaCV 0.1 и OpenCV 2.4.0 в Java, я использую этот код для сшивания изображений:

stitcher = Stitcher.createDefault(false);

MatVector images = new MatVector(imageN.size());
for(...){
   CvArr image = cvLoadImage(imageN);
   images.put(index,image);
}

MatVector result = new MatVector(1);
int status = stitcher.stitch(images,result);

if( status == stitcher.OK )
{
   cvSaveImage(result.getIplImage(0));
}

ПРИМЕЧАНИЕ 1: Загруженные изображения в этом примере являются допустимыми изображениями для сшивания.

ПРИМЕЧАНИЕ 2. Версия кода C++ работает без проблем в текущей конфигурации.

В методе stacker.stitch opencv выдает исключение утверждения, такое как «k == MAT». Как мне это исправить? Правильно ли используется MatVector в этом примере кода?

Спасибо...


person AGP    schedule 21.06.2012    source источник


Ответы (1)


Я нашел это, это ошибка, связанная с JavaCv.

На самом деле JavaCv не виноват. API-интерфейс сшивателя OpenCV использует cv::OutputArray для возврата сшитого изображения, но этот метод приводит cv::OutputArray к cv::Mat при выполнении. JavaCV переносит метод OpenCV только с использованием интерфейса параметров, поэтому он преобразует параметр как std::vector, что приводит к ошибке утверждения.

Требуется преобразовать std::vector в Mat, чтобы он заработал. Я не знаю, существует ли какой-либо другой способ для этого преобразования, но в противном случае это может быть исправлено только автором библиотеки.

Говорят, что версия C++ работает, но на самом деле она работает, когда параметр pano задается как cv::Mat, когда вводится std::vector, он снова выдает те же утверждения об ошибке.

person AGP    schedule 21.06.2012