Я хочу выделить каждый символ на следующем изображении:
, и он должен создать прямоугольную ограничивающую рамку вокруг каждого символа.Мой код создает круглую ограничивающую рамку.Мне нужно предоставить эти отдельные изображения персонажей для моей обученной модели, чтобы предсказать персонажа.Я не занимался обработкой изображений, поэтому я задавал такой вопрос.
Вот код, который я использую:
# Standard imports
import cv2
import numpy as np;
from PIL import Image
params = cv2.SimpleBlobDetector_Params()
# Change thresholds
params.minThreshold = 10;
params.maxThreshold = 200;
#Filter by Color
params.filterByColor=False
params.blobColor=255
# Filter by Area.
params.filterByArea = False
params.minArea = 50
# Filter by Circularity
params.filterByCircularity = False
params.minCircularity = 0.0785
#
# # Filter by Convexity
params.filterByConvexity = False
params.minConvexity = 0.87
#
# # Filter by Inertia
params.filterByInertia = False
params.minInertiaRatio = 0.01
# Read image
im = cv2.imread("C:\\xx\\testimages\\bw_plate.jpg", cv2.IMREAD_GRAYSCALE)
cv2.threshold(im,200,255,cv2.THRESH_BINARY_INV,im)
# Set up the detector with default parameters.
detector = cv2.SimpleBlobDetector_create(params)
# Detect blobs.
keypoints = detector.detect(im)
# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# Show keypoints
cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey(0)
Мой вывод с использованием следующего кода:
Почему он не определяет 0 и 2 должным образом?Кроме того, как я могу создать отдельные файлы JPEG для каждого изолированного символа?
Реализация моего проекта на C ++ использует класс CblobResult , который выполнял сегментацию.Есть ли в Python эквивалентная библиотека?
Вот так должен выглядеть окончательный результат для каждого символа после сегментации: