πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV ΠΈ Python 🐍

Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π² OpenCV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python? Для поиска ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² Π² OpenCV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ findContours(). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

    import cv2

    # Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния
    image = cv2.imread('image.jpg')

    # ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ сСрого
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€ΠΎΠ³Π° для создания Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ изобраТСния
    ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

    # НахоТдСниС ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ²
    contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ
    cv2.drawContours(image, contours, -1, (0, 255, 0), 3)

    # ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ изобраТСния с ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ
    cv2.imshow('Contours', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 'image.jpg', ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ сСрого ΠΈ примСняСм ΠΏΠΎΡ€ΠΎΠ³ для создания Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ изобраТСния. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ findContours(), указывая Ρ‚ΠΈΠΏ поиска ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² (RETR_EXTERNAL) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ аппроксимации ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² (CHAIN_APPROX_SIMPLE). Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ drawContours() ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° экран. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenCV для Python, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄. Π£Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ Π² OpenCV!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π² OpenCV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

Найти ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ - это ваТная Π·Π°Π΄Π°Ρ‡Π° Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ Π·Ρ€Π΅Π½ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenCV для Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты для выдСлСния ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ². Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV ΠΈ Python.

Π¨Π°Π³ 1: Установка OpenCV

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenCV для Python. Если ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ установлСна, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

pip install opencv-python

Π¨Π°Π³ 2: Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV:

import cv2

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ imread для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ image. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ сСрого, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс выдСлСния ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ².

Π¨Π°Π³ 3: Поиск ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ²

Для поиска ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² Π² OpenCV ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция findContours. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ‰Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ:

contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

Ѐункция findContours ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ - исходноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΈ сСрого. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ - ΠΌΠ΅Ρ‚ΠΎΠ΄ приблиТСния ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ cv2.RETR_EXTERNAL для поиска Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ². Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ - ΠΌΠ΅Ρ‚ΠΎΠ΄ приблиТСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ cv2.CHAIN_APPROX_SIMPLE для упрощСния ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ².

Π¨Π°Π³ 4: Визуализация ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ²

ПослС поиска ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ изобраТСния для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ²
contour_image = image.copy()

# Визуализация ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ²
cv2.drawContours(contour_image, contours, -1, (0, 255, 0), 2)

ΠœΡ‹ создаСм копию исходного изобраТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ drawContours для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² Π½Π° ΠΊΠΎΠΏΠΈΠΈ изобраТСния. ПослСдниС Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° - Ρ†Π²Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° ΠΈ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ.

Π¨Π°Π³ 5: ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

НаконСц, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
cv2.imshow('Contours', contour_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ imshow ΠΈ waitKey для отобраТСния изобраТСния ΠΈ оТидания наТатия клавиши. Ѐункция destroyAllWindows Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ всС ΠΎΠΊΠ½Π° послС наТатия клавиши.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π² OpenCV с использованиСм Python. Π­Ρ‚ΠΎΡ‚ процСсс основан Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ изобраТСния, поискС ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² ΠΈ ΠΈΡ… Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ findContours для получСния Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π£Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с OpenCV!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

[Python] Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² распознаваниС ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· OpenCV

Π£Ρ€ΠΎΠΊ #3 Python / РаспознаваниС ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² OpenCV

Π£Ρ€ΠΎΠΊ β„–6. ΠšΠΎΠ½Ρ‚ΡƒΡ€Ρ‹. Beyond Robotics

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ“‚ Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡƒ Π½Π° Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄

🐍 Бколько вСсит ΠΏΠΈΡ‚ΠΎΠ½ Π΄Π»ΠΈΠ½ΠΎΠΉ 2 ΠΌΠ΅Ρ‚Ρ€Π°?

πŸ”§ΠšΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ подстроку Π² строку Python? Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV ΠΈ Python 🐍

Как Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π² Python? πŸ”€

Как Π² Python ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с массивом? πŸ€”

πŸ“² Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Python Π½Π° Android: пошаговая инструкция πŸ“±