Я прикрепил два изображения: tekst.png и tekst2.png. Я также прикрепил изображение comparison.png, которое показывает желаемый результат (созданный вручную) и результат, который я сейчас получаю с помощью своей программы.
Если у кого-нибудь есть любые советы, буду очень признателен!
Краткое описание желаемого решения:
- Возвращает один внешний контур, максимально приближенный к логотипу.
- Я могу использовать контур, упомянутый в последнем предложении, чтобы увеличить его и создать отступ между логотипом и контуром.
- Я могу использовать контур, упомянутый в последнем предложении, чтобы увеличить его и создать отступ между логотипом и контуром.
- li>
Какой-то алгоритм сглаживания готового контура
def current_milli_time():
return round(time.time() * 1000)
def time_calculation_start():
timing.append(current_milli_time())
def time_calculation_end(string):
timing.append(current_milli_time())
print(str(string) + ": ", timing[1] - timing[0], "ms")
timing.clear()
def render_png(filename):
print(filename)
time_calculation_start()
original_image = cv2.imread(str(filename), cv2.IMREAD_UNCHANGED)
copy = original_image.copy() # Saved for imagecreation
time_calculation_end("Setup")
time_calculation_start()
if(original_image.shape[2] == 4):
b,g,r,mask = cv2.split(original_image)
time_calculation_end("Mask")
# Reduce outer turdss
time_calculation_start()
kernel = np.ones((3,3), np.uint8)
dilation = cv2.dilate(mask,kernel,iterations = 2)
dilation = cv2.erode(dilation,kernel,iterations = 1)
time_calculation_end("Dialtion")
time_calculation_start()
gaublur = cv2.GaussianBlur(dilation,(16,16),0)
time_calculation_end("Gaussian blur")
#Find contours
time_calculation_start()
contours, hierarchy = cv2.findContours(gaublur, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
time_calculation_end("Find contours")
print("\tContour layers: ", len(contours))
# Draw contours
time_calculation_start()
cv2.drawContours(copy, contours, -1, (0, 255, 0, 255),1)
time_calculation_end("Draw contours")
print("\n")
cv2.imwrite(str(render_path) + str(filename), copy)
Подробнее здесь: https://stackoverflow.com/questions/667 ... er-contour