рдкрд╛рдЗрдерди рдореЗрдВ рдкреАрдЖрдИрдПрд▓ рдЖрд╕рд╛рди рд╕реЗ рдХрдард┐рди рд╣реИ

рдЬрдЯрд┐рд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рдирдХ рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд░рдВрдЧреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдЫрд╡рд┐

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЙрдбреНрдпреВрд▓ рдЪрд╛рд╣рд┐рдП:

from PIL import Image, ImageDraw 

рдЖрд░рд╛рдорджрд╛рдпрдХ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╕реЗрдЯ рдХрд░реЗрдВ:

 image = Image.open('test.jpg') #   draw = ImageDraw.Draw(image) #     width = image.size[0] #   height = image.size[1] #   pix = image.load() #    

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╣рдо RGB рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдВрдЧреЗред PIL рд╕реНрд╡рд░реВрдкреЛрдВ 1, L, P, RGB, RGBA, CMYK, YCbCr, LAB, HSV, I, F рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ: (x, y), (рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛) , рдЬрд╣рд╛рдВ x, y рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВ, рдФрд░ RGB рдХреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди 0 рд╕реЗ 255 рддрдХ рдХреЗ рд╣реИрдВред рдпрд╛рдиреА, рд╣рдо 8-рдмрд┐рдЯ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ ред

рдЧреНрд░реЗ рдХреА рдЫрд╛рдпрд╛


рдПрдХ рдЧреНрд░реЗ рдЯрд┐рдВрдЯ рд╕рднреА рд░рдВрдЧ рдкрдЯреНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рддреАрдиреЛрдВ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рдзреНрдп рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 for x in range(width): for y in range(height): r = pix[x, y][0] #     g = pix[x, y][1] # b = pix[x, y][2] # sr = (r + g + b) // 3 #  draw.point((x, y), (sr, sr, sr)) #  image.save("result.jpg", "JPEG") #    

рдЫрд╡рд┐
рдереЛрдбрд╝рд╛ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ
рдорд╛рдирд╡ рдЖрдБрдЦ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдорд╛рдирддреА рд╣реИред рдХреЛрдИ рднреА рдЖрдкрдХреЛ рд╕рдЯреАрдХ рд╕реВрддреНрд░ рдирд╣реАрдВ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░рдВрдЧреЛрдВ рдХреА рдзрд╛рд░рдгрд╛ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрд▓рдЯ рджреЗрдирд╛


рд╡рд░реНрддрдорд╛рди рд░рдВрдЧ 255 рд╕реЗ рдШрдЯрд╛рдХрд░ рдЙрд▓рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] draw.point((x, y), (255 - r, 255 - g, 255 - b)) 

рдЫрд╡рд┐

рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдЙрд▓рдЯрд╛


рджреЛ рдкрд┐рдЫрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] sr = (r + g + b) // 3 draw.point((x, y), (255 - sr, 255 - sr, 255 - sr)) 

рдЫрд╡рд┐

рдЪрдпрдирд╛рддреНрдордХ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдЙрд▓рдЯрд╛


рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдереНрд░реЗрд╢реЛрд▓реНрдб рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ 100 рдореЗрдВ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛:

 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] if (r+g+b)>100: #    100 ,    sr = (r + g + b) // 3 draw.point((x, y), (255-sr, 255-sr, 255-sr)) else: #    sr = (r + g + b) // 3 draw.point((x, y), (sr, sr, sr)) 

рдЫрд╡рд┐

рдирд┐рд╖реНрдХрд░реНрд╖


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдбреАрдПрдлрдПрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi451074/


All Articles