Я пытаюсь объединить/сшить 2 изображения вместе, но обнаружил, что класс сшивателя по умолчанию в OpenCV не может обрабатывать мои изображения. Так что я начал писать свой собственный... К сожалению, изображения слишком большие, чтобы прикрепить к этому сообщению (они оба имеют размер 12600x9000 пикселей).. поэтому я постараюсь объяснить как можно лучше.
2 изображения не являются снимками, сделанными камерой, а представляют собой файлы tiff, извлеченные из файла PDF. Сами изображения на самом деле были чертежами САПР, поэтому там не так много градиентов, и поэтому я думаю, что класс сшивателя по умолчанию не мог их обработать.
До сих пор мне удалось извлечь функции и сопоставить их. Также я использовал следующий хорошо известный пример, чтобы сшить их вместе:
Mat WarpedImage;
cv::warpPerspective(img_2,WarpedImage,homography,cv::Size(2*img_2.cols,2*img_2.rows));
Mat half(WarpedImage,Rect(0,0,img_1.cols,img_1.rows));
img_1.copyTo(half);
Я как бы сделал его подходящим ... потому что моя проблема в том, что в моем случае 2 изображения могут быть выровнены по вертикали или по горизонтали. По умолчанию все примеры стежков в Интернете предполагают, что первое изображение является левым изображением, а второе изображение — правым изображением.
Итак, мой первый вопрос: как я могу определить, находится ли изображение слева, справа, выше или ниже первого изображения, и создать новое изображение правильного размера?
Во-вторых... В настоящее время я получаю правильное изображение... однако, поскольку у меня нет приличного кода для проверки идеальной ширины и высоты нового изображения, у меня много черного/пустого пространства в новом изображении. Какой был бы лучший код C++ для удаления этих черных областей? (Я вижу много сценариев Python в сети.. но нет примеров этого на C++.. и у меня нет навыков Python....)
Заранее большое спасибо за вашу помощь. Привет, Флорис.