Я действительно новичок в opencv и новичок в python.
У меня есть это изображение:
![original bmp 24bit image](https://i.stack.imgur.com/ycDcm.png)
Я хочукаким-то образом применить правильное пороговое значение, чтобы оставить только 6 цифр.
В целом я намерен попытаться выполнить ручное распознавание изображений для каждой цифры отдельно, используя алгоритм k-ближайших соседей для каждой цифрыlevel (kNearest.findNearest)
Проблема в том, что я не могу достаточно почистить цифры, особенно цифру '7', через которую проходит этот синий водяной знак.
Шаги Iдо сих пор пробовал следующее:
Я читаю изображение с диска
# IMREAD_UNCHANGED is -1
image = cv2.imread(sys.argv[1], cv2.IMREAD_UNCHANGED)
Тогда я оставляю только синий канал, чтобы избавиться от синего водяного знака вокруг цифры '7', эффективно преобразуя его в одноканальное изображение
image = image[:,:,0]
# openned with -1 which means as is,
# so the blue channel is the first in BGR
![single channel - red only - image](https://i.stack.imgur.com/tc6wL.png)
Затем я немного умножаю его, чтобы увеличить контраст между цифрами ифон:
image = cv2.multiply(image, 1.5)
![multiplied image to increase contrast](https://i.stack.imgur.com/wLGw4.png)
Наконец я выполняю бинарный + отсечение порога:
_,thressed1 = cv2.threshold(image,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
![binary Oahu thresholded image](https://i.stack.imgur.com/hTsi1.png)
Как вы видите конечный результатдовольно хорошо, за исключением цифры «7», которая сохранила много шума.
Как улучшить конечный результат?Пожалуйста, предоставьте пример изображения, если это возможно, лучше понять, чем просто фрагменты кода.