Я сейчас пытаюсь совместить более двух изображений вместе в C ++ с opencv.Проблема в том, что когда я прошиваю более 2, предыдущее изображение не может быть загружено.
Например, теперь imageContainer содержит три изображения.
Первое изображение:
Второе изображение:
Третье изображение:
Первая итерация цикла: (Объединение первого и второго изображения)
Вторая итерация циклацикл: (объединение результата первой итерации и третьего изображения)
Вы можете видеть, что после второй итерации изображение результата не содержит объект.(Левая сторона последнего изображения полностью черная),
В main.cpp
cv::Mat result = *imageContainer.begin();
for(vector<cv::Mat>::iterator itr = imageContainer.begin(); itr != imageContainer.end(); itr++){
if(itr == imageContainer.begin())
continue;
result = applySURF(result, *itr);
}
В SURF.cpp
cv::Mat applySURF(cv::Mat object, cv::Mat image){
/* More codes here but it won't affect solving the problem */
cv::Mat result;
cv::warpPerspective(image, result, transformationMat, cv::Size(object.cols + image.cols, image.rows));
cv::Mat half(result, cv::Rect(0, 0, image.cols, image.rows));
object.copyTo(half);
imshow("Object", object);
imshow("Result", result);
cvWaitKey(0);
return result;
}
Я думаю, проблема связанав область интересов (ROI).Как я могу решить это?
Большое спасибо.