Вырезайте изображение, пока не найдете другой цвет - PullRequest
0 голосов
/ 18 июня 2020

Я реализую определенные функции для своей программы, и одна из них - когда я извлекаю изображение, я хочу обрезать его до одного пикселя перед другим цветом

Я имею в виду, это исходное изображение, которое я получаю

enter image description here

И мне нужно сократить примерно до этого

enter image description here

Я использую это, потому что это зашифрованный код, который мне нужно прочитать с помощью tresseract, если я прочитал его с помощью tresseract, в противном случае он не вернет ожидаемый результат, а ограничит его только этим изображением, если он вернет текст правильно

Я еще не реализовал код python, потому что не знаю, как обращаться с этими случаями, поэтому я не привожу примеры того, что я сделал.

Я не 'Не знаю, является ли это наиболее практичным решением или нужно правильно отрегулировать tresseract.

Поскольку в tresseract я использовал эти команды только для его настройки

text = pytesseract.image_to_string(img, lang="spa",config="--psm 4 tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz0123456789.%/")

1 Ответ

1 голос
/ 18 июня 2020

Я бы сделал это с помощью библиотеки PIL. Чтобы получить такие значения пикселей.

from PIL import Image
im = Image.open('test.jpg') 
pix = im.load()
print(pix[x,y])

Затем я бы oop перебрал все пиксели и нашел один раз, который не близок к черному цвету, который у вас есть, и добавил их в новый список. И затем я бы снова поместил это в новый файл, используя PIL.

Чтобы ответить на ваш вопрос, это код l oop через пиксели и проверка, не являются ли они черными. Конечно, вам все еще нужен приведенный выше код.

for i in range(im.size[0]): #looping for each pixel of y
    for n in range(im.size[1]): #looping for each pixel of x
        print(pix[i,n])
        if pix[i,n][0] < 10 and pix[i,n][1] < 10 and pix[i,n][2] < 10: #checking all the RGB values are under 10
            print('Not black')
...