как получить лучший результат от python OpenCV Thresholding? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть оригинальное изображение, например this , и я хочу сегментировать каждый символ на этой табличке с обозначением позже, я использую гауссовский порог, чтобы преобразовать табличку, прежде чем сегментировать каждый символ с помощью этого кода:

Val_hsv = cv2.split(cv2.cvtColor(crop_frame, cv2.COLOR_BGR2HSV))[1]
    adaptive_tresh = threshold_local(Val_hsv, 29, offset=9, method="gaussian")
    thresh = (Val_hsv > adaptive_tresh).astype("uint8") * 255
    thresh = cv2.bitwise_not(thresh)

    crop_frame = imutils.resize(crop_frame, width=400)
    thresh = imutils.resize(thresh, width=400)
    cv2.imshow("Threshold plate", thresh)

результат , который выходит, - это слишком много шума, я думаю, я запутался, какое-нибудь решение для лучшего результата, чем это? * 1008 большое спасибо *

1 Ответ

0 голосов
/ 28 февраля 2020

Вместо использования cv2.adaptiveThreshold в этом случае я бы рекомендовал простую цветовую сегментацию, с помощью которой можно легко сегментировать элементы шума черного и красного цветов на входном изображении.

import cv2
import numpy as np

original_image = cv2.imread("/path/to/img.jpg")

mask = cv2.inRange(original_image, np.array([210, 210, 210]), np.array([255, 255, 255]))

enter image description here

Вы можете дополнительно оптимизировать результаты, экспериментируя с различными цветовыми областями, такими как HSV и др. c. что даст вам более точный контроль над границами порога цвета.

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