У меня есть такие изображения персонажей:
Используя следующий код, я мог получить контуры и выпуклую оболочку, затем я мог нарисовать выпуклые для каждого символа.
import cv2
img = cv2.imread('test.png', -1)
ret, threshed_img = cv2.threshold(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY),
127, 255, cv2.THRESH_BINARY)
image, contours, hier = cv2.findContours(threshed_img, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
for cnt in contours:
# get convex hull
hull = cv2.convexHull(cnt)
cv2.drawContours(img, [hull], -1, (0, 0, 255), 1)
print(hull)
cv2.imwrite("contours.jpg", img)
Результат выглядит следующим образом:
Я мог бы получить координаты корпуса следующим образом (для одного символа):
[[[546 134]]
[[534 149]]
[[532 151]]
[[527 153]]
[[523 154]]
[[522 154]]
[[520 109]]
[[521 107]]
[[524 106]]
[[533 106]]
[[539 111]]
[[543 117]]
[[546 122]]]
Теперь я хочу отделить каждый символ, используя convexHull
координаты.
После разделения изображения будут выглядеть как
. , .
Основная причина, по которой я хочу использовать convexHull
координаты, заключается в том, что я могу сегментировать символы, которые были перекрыты в вертикальном пространстве изображения. Вы можете понять, что я имел в виду, используя следующее изображение:
Я не могу точно сегментировать символы, так как большинство изображений содержат символы, как указано выше. Поэтому я хочу сегментировать символы, используя convexHull
координаты.