Как обрезать патч персонажа на изображении, в котором символ l ie вертикальный (не по диагонали) - PullRequest
1 голос
/ 24 февраля 2020

Я новичок ie при обработке изображений, и я столкнулся с проблемой. Я долго искал на net, но это было бесполезно. Вы можете помочь мне? Большое спасибо.

Проблема: обрезать патч персонажа на изображении, в котором персонаж лежит вертикально. Но обычно в результате я получаю, что персонаж лежит по диагонали. Я не знаю, как это преодолеть.

Вот пример. Я хочу получить патч, помеченный зеленой рамкой, но обычно получаю неправильный результат, помеченный красной рамкой.

Моя процедура обработки:

  • Прочитать изображение .
  • Преобразование в одноканальное серое изображение.
  • Поиск контуров.
  • Фильтрация контуров для получения контуров символов.
  • Определение минимума прямоугольник области в соответствии с отфильтрованными контурами.

Вот код:

def processSingleImg(unresizedGrayImg):
    unresizedGrayImg = cv2.blur(unresizedGrayImg, (3, 3))
    unresizedGrayImg = equalizeHist(unresizedGrayImg)
    unresizedGrayImg = cv2.blur(unresizedGrayImg, (3, 3))
    edgeBinaryImg = cv2.Canny(unresizedGrayImg, 100, 220)
    _, contours, h = cv2.findContours(edgeBinaryImg, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    filteredContours = filterContourByAreaAndLength(contours)
    miniRotaRects = detecteMiniRotaRect(filteredContours)

    contoursImg = unresizedGrayImg.copy()
    contoursImg = drawCharacterContour(filteredContours, contoursImg)
    contoursImg = drawRotaRect(miniRotaRects, contoursImg)
    cv2.imshow("rotateRect", contoursImg)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

Можете ли вы дать мне несколько советов? Большое спасибо.

Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...