Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Python ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Pillow

Π‘Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Ρ…ΠΎΠ΄ΠΈΡˆΡŒ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈ видишь ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ статСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅ΡˆΡŒ, Π½ΠΎ Ρ‚ΡƒΡ‚ Ρ‚Π°ΠΊ сошлись Π·Π²Π΅Π·Π΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π» ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π», ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π», Π³Π΄Π΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ пригодится. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ с Π₯Π°Π±Ρ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π½ΡƒΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ простой ΠΈ понятный Π³Π°ΠΉΠ΄ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с изобраТСниями Π½Π° Python β€” поТалуйста.

Pillow β€” это свободно распространяСмая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями (Π΄Π°Π»Π΅Π΅ Imaging Library) Π½Π° Python с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, которая добавляСт Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ открытия, измСнСния ΠΈ сохранСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ….

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ

Π‘Π°ΠΌΡ‹ΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ класс Π² Imaging Library Python β€” это класс Image, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ open(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² нашСй локальной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π­Ρ‚ΠΎ просто! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pillow, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ изобраТСния с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ свойства изобраТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вывСсти Π½Π° экран ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ show

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. y3djvbqsq0cotkez16uocp nafg. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-y3djvbqsq0cotkez16uocp nafg. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° y3djvbqsq0cotkez16uocp nafg

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ изобраТСния

Когда Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Pillow Π² ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡ… jpg ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ png ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python для прСобразования всСх ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ jpg, Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ png.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. omovqnxdlw avcd7abgpliu2nmq. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-omovqnxdlw avcd7abgpliu2nmq. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° omovqnxdlw avcd7abgpliu2nmq

ΠžΠ±Ρ€Π΅Π·ΠΊΠ° изобраТСния

Pillow Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ изобраТСния, ΠΏΡ€ΠΈ этом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния, ΡƒΠΊΠ°Π·Π°Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. . Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Ρ€Π΅Π·Π°Π½ΠΎ. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΠ±Ρ€Π΅Π·Π°Π½Π½ΠΎΠΉ повСрхности прСдставлСны Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ.

ΠŸΡ€ΠΈ этом ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ находятся (x, y) ΠΎΡ‚ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π»Π΅Π²ΠΎΠΉ диагональной Ρ‚ΠΎΡ‡ΠΊΠΈ, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ (x2, y2) Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ диагональной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ снизу справа.

ГСомСтричСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pillow ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ гСомСтричСскиС прСобразования Π½Π°Π΄ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ изобраТСния.

Π­Ρ‚ΠΈ знания ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обучСния ΠΏΡƒΡ‚Π΅ΠΌ прСобразования ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния Π² Ρ‚ΠΎΠ½Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Ρ€Π°Π·Π½Ρ‹Ρ… ракурсов.

ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния

Когда Π²Ρ‹ запуститС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² вашСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 320 Π½Π° 320.

ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ изобраТСния

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. bm6fwrsbit58pjoc6jyw5iimg88. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-bm6fwrsbit58pjoc6jyw5iimg88. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bm6fwrsbit58pjoc6jyw5iimg88

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вращСния для создания 360 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ изобраТСния ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обучСния своСй ΠΌΠΎΠ΄Π΅Π»ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обучСния.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ПослС запуска скрипта, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ 360 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ исходного изобраТСния с Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. . Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ измСнСния ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ изобраТСния. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ особСнности ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,- сглаТиваниС, ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ рСзкости, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡˆΡƒΠΌΠ° ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡ€Π°Π΅Π².

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pillow доступно мноТСство Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ BLUR, BoxBlur, CONTOUR, FIND_EDGES, Filter, GaussianBlur, Kernel, MaxFilter, MedianFilter, SHARPEN, SMOOTH ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ края Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ FIND_EDGES.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. . Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ Π² Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pillow Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π§Ρ‚Π΅Π½ΠΈΠ΅ изобраТСния ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pillow для чтСния изобраТСния ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Python, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅

Π§Ρ‚Π΅Π½ΠΈΠ΅ изобраТСния ΠΈΠ· URL

Π’ этом случаС Π²Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pillow Π² сочСтании с запросами. Запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ GET-request Π½Π° сСрвСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ изобраТСния, Π° ΡƒΠΆΠ΅ Pillow считаСт эти Π±Π°ΠΉΡ‚Ρ‹.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. kmjetjqgc43mob32lawa8uzg8jg. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-kmjetjqgc43mob32lawa8uzg8jg. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° kmjetjqgc43mob32lawa8uzg8jg

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pillow Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ пустоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Image.new() для создания ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния.

Бинтаксис:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. 0scudu3xgec0a5a gl9y12sd tw. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-0scudu3xgec0a5a gl9y12sd tw. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 0scudu3xgec0a5a gl9y12sd tw

РисованиС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² Π½Π° изобраТСниях

Pillow Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для рисования ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° изобраТСниях. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ этом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ просто ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Π° Ρ€Π°ΠΌΠΊΡƒ Π½Π°Π΄ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ исползования

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ пустого изобраТСния.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. sd dqufizi5z7blob0ttjljcbu8. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-sd dqufizi5z7blob0ttjljcbu8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° sd dqufizi5z7blob0ttjljcbu8

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ (x, y) Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ (x2, y2) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€Π°Π²ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ части.

РисованиС тСкста Π½Π° изобраТСниях

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Pillow для рисования тСкста Π½Π° изобраТСниях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python Imaging Library / Pillow / PIL

PIL, извСстная ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python Imaging Library, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями достаточно Π»Π΅Π³ΠΊΠΈΠΌ способом. Π£ PIL Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ развития с 2009. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π΄ΠΎΠ±Ρ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ этого сайта ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Pillow Π΅Ρ‰Π΅ Ρ€Π°Π·. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Pillow.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Pillow?

Pillow это Ρ„ΠΎΡ€ΠΊ PIL (Python Image Library), которая появилась благодаря ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ АлСкса ΠšΠ»Π°Ρ€ΠΊΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… участников. Основана Π½Π° ΠΊΠΎΠ΄Π΅ PIL, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΈΠ»Π°ΡΡŒ Π² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ, ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ сохранСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² изобраТСния. МногоС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ PIL.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ установка Pillow

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ использования Pillow, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅. Pillow доступна для Windows, Mac OS X ΠΈ Linux. Бамая β€œΡΠ²Π΅ΠΆΠ°Ρβ€ вСрсия β€” это вСрсия β€œ8.1.0”, ΠΎΠ½Π° поддСрТиваСтся Π½Π° python 3.6 ΠΈ Π²Ρ‹ΡˆΠ΅. Для установки Pillow Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ conda ΠΈΠ»ΠΈ pip :

Для установки Pillow Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Linux просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

А установки Pillow Π½Π° MacOS X Π½ΡƒΠΆΠ½ΠΎ для Π½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ XCode, Π° Π·Π°Ρ‚Π΅ΠΌ Homebrew. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Homebrew установлСн, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Pillow установлСна

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Pillow установлСна, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строкС:

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pillow для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ собираСмся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с изобраТСниями, для Π½Π°Ρ‡Π°Π»Π°, скачаСм ΠΎΠ΄Π½ΠΎ. Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, пропуститС этот шаг, описанный Π½ΠΈΠΆΠ΅.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартноС тСстовоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«LennaΒ» ΠΈΠ»ΠΈ Β«LenaΒ». Π­Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… экспСримСнтах ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ сюда ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если Π²Ρ‹ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ сохранится ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с количСством пиксСлСй 512Γ—512.

ИспользованиС Pillow

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π Π°Π±ΠΎΡ‚Π° с изобраТСниями Π½Π° Python

Π’Π΅ΠΌΠ° сСгодняшнСго Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° β€” Ρ‡Π΅ΠΌΡƒ ΠΆΠ΅ научился Python Π·Π° всС Π³ΠΎΠ΄Ρ‹ своСго сущСствования Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с изобраТСниями. И Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ старичков Ρ€ΠΎΠ΄ΠΎΠΌ ΠΈΠ· 1990 Π³ΠΎΠ΄Π° ImageMagick ΠΈ GraphicsMagick, Π΅ΡΡ‚ΡŒ соврСмСнныС эффСктивныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. НапримСр, Pillow ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Pillow-SIMD. Π˜Ρ… Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ АлСксандр ΠšΠ°Ρ€ΠΏΠΈΠ½ΡΠΊΠΈΠΉ (homm) Π½Π° MoscowPython сравнил Ρ€Π°Π·Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями Π½Π° Python, прСдставил Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ ΠΈ рассказал ΠΎ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… особСнностях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… всСгда Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΠ»Π°Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ΄ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ максимально эффСктивно.

Бэкграунд

БСрвис ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Uploadcare β€” это сСрвСр, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ HTTP-запрос с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ изобраТСния ΠΈ ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ опСрациями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. Π‘Π΅Ρ€Π²Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚. Π’ качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‡Π°Ρ‰Π΅ всСго выступаСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

Π’Π΅ΡΡŒ сСрвис ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π²ΠΎΠΊΡ€ΡƒΠ³ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ИмСнно ΠΎΡ‚ качСства, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ удобства использования графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ зависит качСство всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НСслоТно Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² качСствС графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Uploadcare ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Pillow.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ΠšΡ€Π°Ρ‚ΠΊΠΎ рассмотрим, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π² Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π΄Π°Π»Π΅Π΅.

Pillow

Pillow β€” Ρ„ΠΎΡ€ΠΊ PIL (Python Imaging Library). Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ старый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠΈΠΉ Π² 1995 Π³ΠΎΠ΄Ρƒ для Python 1.2. МоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, насколько ΠΎΠ½ старый! Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Python Imaging Library Π±Ρ‹Π»Π° Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π°, Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ. Π€ΠΎΡ€ΠΊ Pillow Π±Ρ‹Π» сдСлан для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Python Imaging Library Π½Π° соврСмСнных систСмах. ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ количСство ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ людям Π² Python Imaging Library росло, ΠΈ Π²Ρ‹ΡˆΠ»Π° Pillow 2.0, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Python 3. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Pillow.

Pillow прСдставляСт ΠΈΠ· сСбя Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Python, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΊΠΎΠ΄Π° написана Π½Π° Π‘, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° β€” Π½Π° Python. ВСрсии Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅: 2.7, 3.3+, PΡƒPΡƒ, PΡƒPΡƒΠ—.

Pillow-SIMD

Π­Ρ‚ΠΎ ΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΊ Pillow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ с мая 2016 Π³ΠΎΠ΄Π°. SIMD ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Single Instruction, Multiple Data β€” ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ процСссор ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ большСС количСство дСйствий Π½Π° Ρ‚Π°ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ соврСмСнныС инструкции.

Pillow-SIMD β€” это Π½Π΅ Ρ„ΠΎΡ€ΠΊ Π² классичСском ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΆΠΈΡ‚ΡŒ собствСнной Тизнью. Π­Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½Π° Pillow, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ устанавливаСтС ΠΎΠ΄Π½Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ вмСсто Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½ΠΈ строчки Π½Π΅ мСняСтС Π² своСм исходном ΠΊΠΎΠ΄Π΅, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Pillow-SIMD ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ с инструкциями SSE4 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ практичСски Π²ΠΎ всСх соврСмСнных x86 процСссорах. Π’Π°ΠΊΠΆΠ΅ Pillow-SIMD ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ инструкций AVX2. Π­Ρ‚ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ инструкций Π΅ΡΡ‚ΡŒ, начиная с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Haswell, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ с 2013 Π³ΠΎΠ΄Π°.

OpenCV

Другая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями Π² Python, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ навСрняка ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ β€” это OpenCV (Open Computer Vision). Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с 2000 Π³ΠΎΠ΄Π°. Π‘ΠΈΠ½Π΄ΠΈΠ½Π³ Π½Π° Python Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ постоянно Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½, Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ рассинхронности ΠΌΠ΅ΠΆΠ΄Ρƒ самой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΎΠΌ.

К соТалСнию, эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠΊΠ° Π½Π΅ поддСрТиваСтся Π² PyPy, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ OpenCV базируСтся Π½Π° numpy, Π° numpy Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ PyPy, ΠΈ Π² OpenCV ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ PyPy всС Π΅Ρ‰Π΅ Π½Π΅Ρ‚.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β€” VIPS. Основная идСя VIPS Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ всё ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ малСнькиС кусочки, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³ΠΈΠ³Π°ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Ρ‹ памяти.

Π­Ρ‚ΠΎ довольно старая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€” 1993 Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΎΠ½Π° ΠΎΠ±ΠΎΠ³Π½Π°Π»Π° своё врСмя. О Π½Π΅ΠΉ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π±Ρ‹Π»ΠΎ ΠΌΠ°Π»ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠ»Ρ‹ΡˆΠ½ΠΎ, Π½ΠΎ Π² послСднСС врСмя для VIPS стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ языки, Π² Ρ‚ΠΎΠΌ числС для Go, Node.js, Ruby.

Π― Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΏΠΎΡ‰ΡƒΠΏΠ°Ρ‚ΡŒ, Π½ΠΎ ΠΌΠ½Π΅ это Π½Π΅ ΡƒΠ΄Π°Π²Π°Π»ΠΎΡΡŒ ΠΏΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π³Π»ΡƒΠΏΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. Π― Π½Π΅ ΠΌΠΎΠ³ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ VIPS, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ собирался ΠΎΡ‡Π΅Π½ΡŒ слоТно. Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ (Π² 2017 Π³ΠΎΠ΄Ρƒ) Π²Ρ‹ΡˆΠ΅Π» Π±ΠΈΠ½Π΄ΠΈΠ½Π³ pyvips ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° самого VIPS, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΠΆΠ΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ установка ΠΈ использованиС VIPS ΠΎΡ‡Π΅Π½ΡŒ простая. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ: Python 2.7, 3.3+, PΡƒPΡƒ, PΡƒPΡƒΠ—.

ImageMagick & GraphicsMagick

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Ρ‚ΠΎ нСльзя Π½Π΅ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ старичков β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ImageMagick ΠΈ GraphicsMagick. ПослСдняя ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° Ρ„ΠΎΡ€ΠΊΠΎΠΌ ImageMagick с большСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ сСйчас ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρƒ Π½ΠΈΡ…, каТСтся, ΡΡ€Π°Π²Π½ΡΠ»Π°ΡΡŒ. Π”Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ, насколько я знаю, ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π­Ρ‚ΠΎ самыС старыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ· Ρ‚Π΅Ρ…, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я сСгодня упомянул (1990 Π³ΠΎΠ΄). Π—Π° всС это врСмя Π±Ρ‹Π»ΠΎ нСсколько Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΎΠ² для Python, ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΈΠ· Π½ΠΈΡ… Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎ ΡƒΠΌΠ΅Ρ€Π»ΠΈ ΠΊ настоящСму ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ. Из Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ:

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с изобраТСниями, ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ интСрСсно (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΌΠ½Π΅) β€” это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ½Π°Ρ‡Π΅ ΠΌΡ‹ Π±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈ Π½Π° Python Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” это Π½Π΅ такая простая ΡˆΡ‚ΡƒΠΊΠ°. НСльзя просто ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ каТдая функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

БоотвСтствСнно, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π›ΠΈΠ±ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ для вашСго прилоТСния такая-Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС (ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅).

Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Когда Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ получаСтся. Π”Π°ΠΆΠ΅ Ссли с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда Π²Ρ‹ написали ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ.

НСдавно Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π³Π΄Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Pillow ΠΈ OpenCV, ΠΌΠ½Π΅ попался Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Π’Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΈ Ρ‚Π°ΠΌ, ΠΈ Ρ‚Π°ΠΌ, BoxBlur, ΠΈ Ρ‚Π°ΠΌ, ΠΈ Ρ‚Π°ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 3, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Pillow (3) β€” это радиус размытия, Π° Π² OpenCV ksize=(3, 3) β€” это Ρ€Π°Π·ΠΌΠ΅Ρ€ ядра, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π³Ρ€ΡƒΠ±ΠΎ говоря, Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для OpenCV Π±Ρ‹Π»ΠΎ Π±Ρ‹ 3*2+1, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ (7, 7).

Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ зависит ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈ Ρ‡Π°Ρ‰Π΅ всСго ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ растСт Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ…. А Ссли этих Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Ρ€ΠΈ, ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависит ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, Ρ‚ΠΎ получаСтся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΠΊΡƒΠ±Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Гауссово Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ Π² OpenCV.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. q5eaut epivf3abcoh34rdmjsgg. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-q5eaut epivf3abcoh34rdmjsgg. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° q5eaut epivf3abcoh34rdmjsgg

Π‘Π»Π΅Π²Π° β€” радиус 3, справа β€” 30. Как Π²ΠΈΠ΄Π½ΠΎ, Ρ€Π°Π·Π½ΠΈΡ†Π° Π² скорости Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² 10 Ρ€Π°Π·.

Когда ΠΏΠ΅Ρ€Π΅Π΄ΠΎ ΠΌΠ½ΠΎΠΉ встала Π·Π°Π΄Π°Ρ‡Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΏΠΎ Гауссу Π² ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, мСня Π½Π΅ устраивало, Ρ‡Ρ‚ΠΎ гипотСтичСски ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ 900 мс Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ тысячи Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΠ΄Π½Ρƒ β€” нСцСлСсообразно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΈΠ·ΡƒΡ‡ΠΈΠ» вопрос ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π² Pillow Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΏΠΎ Гауссу, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° константноС врСмя ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ радиуса. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Гауссова размытия влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

Но здСсь Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС ΠΈΠ»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅.

Π― Ρ…ΠΎΡ‡Ρƒ донСсти, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ строитС ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ систСму, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² зависит ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅. Π’ΠΎΠ³Π΄Π° Π²Ρ‹ смоТСтС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ с этой ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ.

НавСрноС, самая частая опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ с изобраТСниями послС ΠΈΡ… открытия, β€” это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (resize).

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ij 6xiharsev 2a89wlcnvun6b0. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-ij 6xiharsev 2a89wlcnvun6b0. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ij 6xiharsev 2a89wlcnvun6b0

На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ прСдставлСна ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (большС β€” Π»ΡƒΡ‡ΡˆΠ΅) Ρ€Π°Π·Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ изобраТСния Π² 8 ΠΈ Π² 1,25 Ρ€Π°Π·.

Для PIL Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 17 Mpx/s ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ с Π°ΠΉΡ„ΠΎΠ½Π° (12 Mpx) ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π² 1,25 Ρ€Π°Π· Ρ‡ΡƒΡ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ Π·Π° сСкунду. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ нСдостаточно для ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выполняСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ.

Π― стал ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ рСсайза, ΠΈ Π² Pillow 2.7 ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΄Π²ΡƒΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прироста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° Π² Pillow 4.3 β€” Ρ‚Ρ€Π΅Ρ…ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ (Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° вСрсия Pillow 5.3, Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ рСсайза Π² Π½Π΅ΠΉ Ρ‚Π° ΠΆΠ΅).

Но опСрация рСсайза β€” это такая ΡˆΡ‚ΡƒΠΊΠ°, которая ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ лоТится Π½Π° SIMD. Она ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ single instruction, multiple data, ΠΈ поэтому Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии Pillow-SIMD ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π² 19 Ρ€Π°Π· ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ рСсайза ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Python Imaging Library ΠΏΡ€ΠΈ использовании Ρ‚Π΅Ρ… ΠΆΠ΅ самых рСсурсов.

Π­Ρ‚ΠΎ сущСствСнно Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ рСсайза Π² OpenCV. Но сравнСниС это Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² OpenCV ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‡ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ качСствСнный способ рСсайза бокс-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ, Π° Π² Pillow-SIMD рСсайз Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свСрток.

Π­Ρ‚ΠΎ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Ρ‚Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ускорСны Π² Pillow-SIMD ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Pillow.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. it hhqosz vm69bg o8tt8ajddm. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-it hhqosz vm69bg o8tt8ajddm. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° it hhqosz vm69bg o8tt8ajddm

Оказалось, Ρ‡Ρ‚ΠΎ Pillow-SIMD Π½Π° этом Π½Π°Π±ΠΎΡ€Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² 2 Ρ€Π°Π·Π° быстрСС, Ρ‡Π΅ΠΌ Pillow. Π’ самом ΠΊΠΎΠ½Ρ†Π΅ находится Wand (напомню, Ρ‡Ρ‚ΠΎ это ImageMagick).

Но мСня заинтСрСсовало Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρƒ OpenCV ΠΈ VIPS, вСдь это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ с ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? Оказалось, Ρ‡Ρ‚ΠΎ Π² случаС OpenCV, Ρ‚Π° бинарная сборка OpenCV, которая ставится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip, собрана с ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠΌ JPEG (Π°Π²Ρ‚ΠΎΡ€ сборки Π±Ρ‹Π» ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½, Π½Π° 2018 Π³ΠΎΠ΄ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½Π°). Она собрана с libjpeg, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ debian-based, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ libjpeg-turbo, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² нСсколько Ρ€Π°Π· быстрСС. Если ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ OpenCV ΠΈΠ· исходников самому, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ большС.

Π’ случаС VIPS ситуация другая. Π― связался с Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ VIPS, ΠΏΠΎΠΊΠ°Π·Π°Π» Π΅ΠΌΡƒ этот Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ, ΠΌΡ‹ с Π½ΠΈΠΌ довольно Π΄ΠΎΠ»Π³ΠΎ ΠΈ ΠΏΠ»ΠΎΠ΄ΠΎΡ‚Π²ΠΎΡ€Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π»ΠΈΡΡŒ. ПослС Ρ‡Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€ VIPS нашСл нСсколько мСст Π² самом VIPS, Π³Π΄Π΅ исполнСниС Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρƒ, ΠΈ исправил ΠΈΡ….

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ссли ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ OpenCV ΠΈΠ· исходников Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии, Π° VIPS β€” ΠΈΠ· master, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ сСйчас.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. m2kgo8agnblbu9tsc5nw5fonyfk. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-m2kgo8agnblbu9tsc5nw5fonyfk. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° m2kgo8agnblbu9tsc5nw5fonyfk

Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ нашли ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ, Π΅Ρ‰Π΅ Π½Π΅ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ с Ρ‚Π°ΠΊΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° вашСй машинС.

Набор Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²

ВсС Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я рассказал, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницС с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π³Π΄Π΅ я ΠΏΠΈΡˆΡƒ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ½Π΅ самому Π½ΡƒΠΆΠ½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Pillow-SIMD, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ ΠΈΡ… ΠΈ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

На GitHub Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ для тСстирования, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ свои Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

Π”ΠΎ сих ΠΏΠΎΡ€ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² чистом Π²ΠΈΠ΄Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎ ядро процСссора. Но Π½Π°ΠΌ всСм Π΄Π°Π²Π½ΠΎ доступны систСмы с бо́льшим количСством ядСр, ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π—Π΄Π΅ΡΡŒ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Pillow β€” это СдинствСнная ΠΈΠ· всСх рассматриваСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, которая Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ распараллСливаниС Π·Π°Π΄Π°Ρ‡. Π― сСйчас ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ происходит. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚.

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π°ΠΌ интСрСсны 2 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

Бпособы ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

1. На ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…. ΠŸΡ€ΠΈ этом Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя выполнСния ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ мСняСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΎ ядро занимаСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ систСмы растСт ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ количСству ядСр, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

2. На ΡƒΡ€ΠΎΠ²Π½Π΅ графичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Π΅ΡΡ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ графичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Когда графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΎΠ½Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя создаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π° нСсколько Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ…, ΠΈ выполняСт ΠΈΡ…. ΠŸΡ€ΠΈ этом Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя выполнСния ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ β€” ΠΎΠ΄Π½Π° опСрация выполняСтся быстрСС. Но пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ растСт Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΎΡ‚ количСства ядСр. Π•ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ параллСлятся, ΠΈ яркий ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” это Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ PNG-Ρ„Π°ΠΉΠ»ΠΎΠ² β€” Π΅Π³ΠΎ Π½ΠΈΠΊΠ°ΠΊ нСльзя Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° созданиС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π΄Π°ΡŽΡ‚ пропускной способности расти Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ.

3. На ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ процСссора ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ процСссор Ρ€Π°Π±ΠΎΡ‚Π°Π» с Π½ΠΈΠΌΠΈ быстрСС. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ SIMD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, собствСнно, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Pillow-SIMD. РСальноС врСмя выполнСния ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ, пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ растСт β€” это Π±Π΅ΡΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Как ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‚ΠΎ SIMD Ρ…ΠΎΡ€ΠΎΡˆΠΎ совмСщаСтся с распараллСливаниСм Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈ SIMD Ρ…ΠΎΡ€ΠΎΡˆΠΎ совмСщаСтся с распараллСливаниСм Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния.
Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. 3zpaloqfeh6cczwlz8zlk5s33lc. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-3zpaloqfeh6cczwlz8zlk5s33lc. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 3zpaloqfeh6cczwlz8zlk5s33lc
Но распараллСливаниС Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ. Если Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ минусы ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². РСальноС врСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ΠΎ ΠΈ Π±Ρ‹Π»ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ядрС, Π° пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ систСмы вырастСт, Π½ΠΎ Π½Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ количСства ядСр.

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ

Если ΡƒΠΆ ΠΌΡ‹ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΈ β€” ΠΌΡ‹ всС пишСм Π½Π° Python ΠΈ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ GIL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄Π²ΡƒΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Python β€” это строго ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ ΠΏΡ€Π°Π²Π΄Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ GIL Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄Π²ΡƒΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ Π½Π° Python, Π° Ссли ΠΊΠΎΠ΄ написан Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС, ΠΈ Π²ΠΎ врСмя своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ структуры Python, Ρ‚ΠΎ этот ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ GIL ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

МногиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ GIL Π²ΠΎ врСмя своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π² Ρ‚ΠΎΠΌ числС Pillow, OpenCV, pyvips, Wand. НС освобоТдаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° β€” pgmagick. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ спокойно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎΠ΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

Но Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: сколько ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²?

Если ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ бСсконСчноС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, которая Ρƒ нас Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΎΠ½ΠΈ просто Π·Π°ΠΉΠΌΡƒΡ‚ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ вСсь процСссор, β€” ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π― сформулировал ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ.

Для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ N + 1 Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ², Π³Π΄Π΅ N β€” количСство ядСр ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² процСссора Π½Π° машинС, Π° Π²ΠΎΡ€ΠΊΠ΅Ρ€ β€” это процСсс ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ, занятый ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ процСссы, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста ΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы.

НапримСр, Ρƒ нас Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ N + 1 instance Tornado, балансировку ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ осущСствляСт ngnix. Если упомянуто Tornado, Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± асинхронной Ρ€Π°Π±ΠΎΡ‚Π΅.

Асинхронная Ρ€Π°Π±ΠΎΡ‚Π°

Π’ΠΎ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° занимаСтся собствСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ Ρƒ вас Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. АсинхронныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ здСсь ΠΎΡ‡Π΅Π½ΡŒ Π² Ρ‚Π΅ΠΌΡƒ.

Но Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΎΠ½Π° вызываСтся синхронно. Π”Π°ΠΆΠ΅ Ссли Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° отпускаСт Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ GIL, всС Ρ€Π°Π²Π½ΠΎ Event Loop блокируСтся.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ созданиСм ThreadPoolExecutor с ΠΎΠ΄Π½ΠΈΠΌ Ρ‚Ρ€Π΅Π΄ΠΎΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ запускаСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° изобраТСния. Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ² ΡƒΠΆΠ΅ происходит асинхронно.

По сути здСсь создаСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ с ΠΎΠ΄Π½ΠΈΠΌ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΈΠΌΠ΅Π½Π½ΠΎ графичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° Event Loop Π½Π΅ блокируСтся ΠΈ спокойно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

Π’Π²ΠΎΠ΄/Π’Ρ‹Π²ΠΎΠ΄

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ‚Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° ΠΎ графичСских опСрациях β€” это Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅Π΄ΠΊΠΎ создаСм ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π§Π°Ρ‰Π΅ всСго ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π½Π°ΠΌ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (JPEG, PNG, BMP, TIFF ΠΈ ΠΏΡ€.).

БоотвСтствСнно, графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для построСния Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ прилоТСния Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ плюшками ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ/Π²Ρ‹Π²ΠΎΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ².

ЛСнивая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

ΠŸΠ΅Ρ€Π²Π°Ρ такая плюшка β€” это лСнивая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Pillow Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ происходит дСкодирования ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ. Π’Π°ΠΌ возвращаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π³ΠΎ свойства ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π° основании свойств этого изобраТСния, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π»ΠΈ Π²Ρ‹ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ дальшС, Π½Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» Π»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³ΠΈΠ³Π°ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ваш сСрвис.

Если Π²Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ дальшС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ явного ΠΈΠ»ΠΈ нСявного Π²Ρ‹Π·ΠΎΠ²Π° load происходит Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого изобраТСния. Π£ΠΆΠ΅ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ выдСляСтся Π½ΡƒΠΆΠ½ΠΎΠ΅ количСство памяти.

Π Π΅ΠΆΠΈΠΌ Π±ΠΈΡ‚Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

Вторая плюшка, которая Π½ΡƒΠΆΠ½Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ β€” это Ρ€Π΅ΠΆΠΈΠΌ Π±ΠΈΡ‚Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. Π€Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΡ‡Π΅Π½ΡŒ часто содСрТат ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ нСсоотвСтствия с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

Π­Ρ‚ΠΈ нСсоотвСтствия Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Иногда это ошибки ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сСти, ΠΈΠ½ΠΎΠ³Π΄Π° β€” просто ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Pillow, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, просто ΠΊΠΈΠ΄Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Но ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΆΠ΅ Π½Π΅ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° битая, ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρƒ Pillow Π΅ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Π±ΠΈΡ‚Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. ΠœΡ‹ мСняСм ΠΎΠ΄Π½Ρƒ настройку, ΠΈ Pillow стараСтся ΠΏΠΎ максимуму ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ошибки дСкодирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. БоотвСтствСнно, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ хотя Π±Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ.

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. cmjqjuopb ct8wqinkaaeaw0bbc. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-cmjqjuopb ct8wqinkaaeaw0bbc. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° cmjqjuopb ct8wqinkaaeaw0bbc

Π”Π°ΠΆΠ΅ обрСзанная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° β€” это всС Ρ€Π°Π²Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ β€” просто страница с ошибкой.

Бводная Ρ‚Π°Π±Π»ΠΈΡ†Π°

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. znp3ypfris3rbtkmok83gcyvup8. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-znp3ypfris3rbtkmok83gcyvup8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° znp3ypfris3rbtkmok83gcyvup8

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Ρ‹ΡˆΠ΅ я собрал всС, Ρ‡Ρ‚ΠΎ касаСтся Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ‚Π΅Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ. Π’ частности, я посчитал количСство ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² OpenCV ΠΈΡ… мСньшС всСх, Π² ImageMagick β€” большС всСх. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π² ImageMagick ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ любоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π°ΠΌ встрСтится. Π£ VIPS 12 собствСнных ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ², Π½ΠΎ VIPS ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ImageMagick Π² качСствС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π°. Π― Π½Π΅ провСрял, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, надСюсь, Ρ‡Ρ‚ΠΎ бСсшовно.

Π’ Pillow 17 ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ². Π­Ρ‚ΠΎ сСйчас СдинствСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° EXIF. Но сСйчас это нСбольшая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ EXIF самому ΠΈ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² соотвСтствии с Π½ΠΈΠΌ. Π­Ρ‚ΠΎ вопрос нСбольшого сниппСта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ гуглится ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ максимум Π² 20 строчСк.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ OpenCV

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² OpenCV Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ всС Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ с Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. Π’ Π½Π΅ΠΌ мСньшС всСго ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ², Π½Π΅Ρ‚ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ нСльзя ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ EXIF ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ.

Но это Π½Π΅ всС. На самом Π΄Π΅Π»Π΅ Ρƒ OpenCV Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ особСнности. Когда ΠΌΡ‹ просто ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² cv2.imread(filename) ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ JPEG-Ρ„Π°ΠΉΠ»Ρ‹ Π² соотвСтствии с EXIF (см. Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ), Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Ρƒ PNG-Ρ„Π°ΠΉΠ»ΠΎΠ² β€” довольно странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅!

Если ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ IMREAD_UNCHANGED, Ρ‚ΠΎ OpenCV оставляСт Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Ρƒ PNG-Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ пСрСстаСт ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ JPEG-Ρ„Π°ΠΉΠ»Ρ‹ Π² соотвСтствии с EXIF. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π»Π°Π³ влияСт Π½Π° Π΄Π²Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… свойства. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρƒ OpenCV Π½Π΅Ρ‚ возмоТности ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ EXIF, ΠΈ получаСтся, Ρ‡Ρ‚ΠΎ Π² случаС с этим Ρ„Π»Π°Π³ΠΎΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ JPEG Π²ΠΎΠΎΠ±Ρ‰Π΅.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρƒ вас ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π» Ρƒ PNG, ΠΈ Π°Π²Ρ‚ΠΎΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Ρƒ JPEG? НичСго Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” OpenCV Ρ‚Π°ΠΊ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² OpenCV Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, кроСтся Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ Π½Π΅ΠΉ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. По сути, OpenCV рассчитана Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ источниками. Π­Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΌΠ΅Ρ€Π° Π½Π°Ρ€ΡƒΠΆΠ½ΠΎΠ³ΠΎ наблюдСния, которая Ρ€Π°Π· Π² сСкунду скидываСт изобраТСния, ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ это Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 5 Π»Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ Π½Π΅ Π½ΡƒΠΆΠ½Π° Π²Π°Ρ€ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² вопросС Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.

Π›ΡŽΠ΄ΡΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ OpenCV, Π½Π΅ сильно Π½ΡƒΠΆΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ.

Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ всС-Ρ‚Π°ΠΊΠΈ Π½ΡƒΠΆΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½ΡƒΠΆΠ½Π° вся ΠΌΠΎΡ‰ΡŒ OpenCV ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ статистикС?

Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. 2g2omu98a18hv0gzr4387egsj6s. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python Ρ„ΠΎΡ‚ΠΎ. Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python-2g2omu98a18hv0gzr4387egsj6s. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2g2omu98a18hv0gzr4387egsj6s

РСшСниС Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ OpenCV построСн Π½Π° Π±Π°Π·Π΅ numpy, ΠΈ Π² Pillow Π΅ΡΡ‚ΡŒ всС срСдства для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния ΠΈΠ· Pillow Π² массив numpy. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ экспортируСм массив numpy, ΠΈ OpenCV ΠΌΠΎΠΆΠ΅Ρ‚ дальшС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этим ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ со своим собствСнным. Π­Ρ‚ΠΎ дСлаСтся ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ:

Π”Π°Π»ΡŒΡˆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ магию с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ), ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Pillow ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ· OpenCV ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Pillow. БоотвСтствСнно, ΠΌΠΎΠΆΠ½ΠΎ снова ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ получаСтся, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΎΡ‚ Pillow, ΠΈ процСссингом ΠΎΡ‚ OpenCV, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Ρ€Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠΈΡ€ΠΎΠ².

НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ.

Π£Π·Π½Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСкрСты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Python, ΠΏΠ΅Ρ€Π΅Π½ΡΡ‚ΡŒ бСсцСнный ΠΈ мСстами Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ свои Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ совсСм скоро Π½Π° Moscow Python Conf++. НапримСр, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈ Ρ‚Π΅ΠΌΡ‹ Π² расписании.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *