Я новичок 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()
Можете ли вы дать мне несколько советов? Большое спасибо.
Пример