Обрезать изображение после сшивания

После того, как я сшил 2 изображения с помощью OpenCV С++, я хочу обрезать изображение, чтобы удалить черную область вокруг сшитого изображения. Я потеряю часть изображения, но это нормально. изображение выглядит так:

введите здесь описание изображения

Как я могу найти углы изображения и обрезать всю черную область ??

Если есть хорошие ссылки, пожалуйста, предоставьте мне некоторые из них.

С уважением,


person user2906086    schedule 03.11.2015    source источник
comment
вы могли бы дать мой ответ в заголовке stackoverflow.com/questions/21410449/ попробуйте   -  person Micka    schedule 04.11.2015
comment
Спасибо, код в ссылке очень хороший, но может потребоваться его оптимизация. большое спасибо.   -  person user2906086    schedule 04.11.2015
comment
да, он точно не оптимизирован ;)   -  person Micka    schedule 04.11.2015
comment
К сожалению, в некоторых случаях код неправильно обрезал изображение. что заставляет меня потерять большую часть изображения.   -  person user2906086    schedule 08.11.2015


Ответы (1)


Я использовал этот фрагмент кода из руководства разработчика DJI (ищите раздел «Обрезка панорамы»). https://dji-dev.gitbooks.io/mobile-sdk-tutorials/content/en/iOS/PanoDemo/PanoDemo_en.html#stitching-photos

Алгоритм на первый взгляд кажется не очень надежным, но на данный момент он оказался достаточно хорошим для моих случаев использования сшивания. Тем не менее, я считаю, что в коде есть пара ошибок в этих двух строках.

bool isBottomNotBlack=checkBlackRow(gray, roiRect.y+roiRect.height,roiRect);
bool isRightNotBlack=checkBlackColumn(gray, roiRect.x+roiRect.width,roiRect);

который следует изменить на

bool isBottomNotBlack=checkBlackRow(gray, roiRect.y+roiRect.height-1,roiRect);
bool isRightNotBlack=checkBlackColumn(gray, roiRect.x+roiRect.width-1,roiRect);

В противном случае вы можете получить несистематическую ошибку плохого избытка C. Надеюсь, это поможет!

person Khanh    schedule 15.03.2016