Вот подход с использованием массива пикселей. Пиксельные массивы работают медленно, но если скорость не является проблемой, они могут удовлетворить ваши потребности без необходимости загружать какие-либо внешние библиотеки. Кроме того, пиксельные массивы легко понять.
import pygame
# -- You would load your image as a sprite here. --
# -- But let's create a demonstration sprite instead.--
#
usecolor = (46,12,187,255) # Declare an example color.
sprite = pygame.Surface((10,10)) # Greate a surface. Let us call it a 'sprite'.
sprite.fill(usecolor) # Fill the 'sprite' with our chosen color.
#
# -- Now process the image. --
array = pygame.PixelArray(sprite) # Create a pixel array of the sprite, locking the sprite.
sample = array[5,5] # Sample the integer holding the color values of pixel [5,5]
# We will feed this integer to pygame.Color()
sample_1 = sprite.get_at((5,5)) # Alternately, we can use the .get_at() method.
# Do the same for every pixel, creating a list (an array) of color values.
del array # Then delete the pixel array, unlocking the sprite.
m,r,g,b = pygame.Color(sample) # Note: m is for the alpha value (not used by .Color())
print("\n sample =",sample,"decoded by python.Color() to:")
print(" r >>",r)
print(" g >>",g)
print(" b >>",b)
print("\n or we could use .get_at()")
print(" sample_1 =",sample_1)
print()
exit()
Просто протестируйте каждое значение r, g, b, чтобы увидеть, попадают ли они в некоторый желаемый диапазон для каждого цветового компонента. Затем скопируйте каждый пиксель на новую поверхность, заменив все цвета, попадающие в ваш диапазон, на желаемый цвет замены.
Или вы можете добавить, скажем, 75 к каждому компоненту цвета R, G, B (если цвет> 255: цвет = 255) перед размещением пикселя в новом изображении. Это привело бы к исчезновению всех цветов в сторону белого, пока не исчезнет светлый цвет. Затем вы можете повторить процесс, вычитая 75 из каждого оставшегося пикселя (со значениями компонентов менее 255), чтобы снова выдвинуть цвета вперед. Я сомневаюсь, что любую приличную капчу так легко победить, но вот, пожалуйста.
Весело, весело!