Я пытаюсь объединить / сшить 2 изображения вместе, но обнаружил, что класс брошюровщика по умолчанию в OpenCV не может обрабатывать мои изображения.
Итак, я начал писать свой собственный ..
К сожалению, изображения слишком велики, чтобы прикрепить к этому сообщению (они оба имеют размер 12600×9000 пикселей), поэтому я постараюсь объяснить как можно лучше.
Эти 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 изображения могли быть выровнены по вертикали или по горизонтали.
По умолчанию во всех примерах строчек в Интернете предполагается, что первое изображение — это левое изображение, а 2-е — правое изображение.
Итак, мой первый вопрос будет:
Как я могу определить, находится ли изображение слева, справа, над или под первым изображением, и создать новое изображение правильного размера?
Во-вторых ..
В настоящее время я получаю правильное изображение … однако, поскольку у меня нет приличного кода для проверки идеальной ширины и высоты нового изображения, у меня много черного / пустого пространства в новом изображении.
Какой код C ++ будет лучшим для удаления этих черных областей?
(Я вижу много сценариев Python в сети … но нет примеров C ++ этого … и у меня 0 навыков Python ….)
Заранее большое спасибо за вашу помощь.
Привет,
Floris.
Вы можете перепроектировать углы второго изображения с помощью perspectiveTransform
, С помощью преобразованных точек вы можете найти относительное положение вашего изображения и рассчитать новый размер изображения, который будет соответствовать обоим изображениям. Это также позволит вам иметь дело с черными областями, так как у вас есть границы двух изображений.
Других решений пока нет …