πŸ–ŒοΈ Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV Python?

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³ Π² OpenCV с использованиСм Python, Π²Π°ΠΌ понадобится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


import cv2

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ изобраТСния
image = np.zeros((500, 500, 3), np.uint8)

# ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΡ€ΡƒΠ³Π°
center_coordinates = (250, 250)

# Радиус ΠΊΡ€ΡƒΠ³Π°
radius = 100

# Π¦Π²Π΅Ρ‚ ΠΊΡ€ΡƒΠ³Π° (синий Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅)
color = (255, 0, 0)

# Π’ΠΎΠ»Ρ‰ΠΈΠ½Π° ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° ΠΊΡ€ΡƒΠ³Π° (-1 для Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π°)
thickness = -1

# РисованиС ΠΊΡ€ΡƒΠ³Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ
cv2.circle(image, center_coordinates, radius, color, thickness)

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ изобраТСния с нарисованным ΠΊΡ€ΡƒΠ³ΠΎΠΌ
cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
        

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого ΠΊΠΎΠ΄Π° нарисуСт ΠΊΡ€ΡƒΠ³ Π½Π° Ρ‡Π΅Ρ€Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 500x500 пиксСлСй, с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π° (250, 250), радиусом 100 пиксСлСй ΠΈ синим Ρ†Π²Π΅Ρ‚ΠΎΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с нарисованным ΠΊΡ€ΡƒΠ³ΠΎΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Π΅Π³ΠΎ.

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

Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³ Π² OpenCV с использованиСм Python?

OpenCV (Open Source Computer Vision Library) - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, которая позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ Π·Ρ€Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. Она прСдоставляСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ рисованиС гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΊΡ€ΡƒΠ³ΠΈ.

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся установка OpenCV ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… зависимостСй.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ OpenCV с использованиСм pip, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

pip install opencv-python

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Anaconda, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ OpenCV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

conda install -c conda-forge opencv

Π¨Π°Π³ 2: Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenCV

Π’Π°ΠΌ понадобится ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ OpenCV Π² свой Python-скрипт:

import cv2

Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого изобраТСния

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг - ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³:

image = numpy.zeros((height, width, 3), numpy.uint8)

Π—Π΄Π΅ΡΡŒ "height" ΠΈ "width" - это Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "3" ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° количСство Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² (красный, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ, синий).

Π¨Π°Π³ 4: РисованиС ΠΊΡ€ΡƒΠ³Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ cv2.circle:

center_coordinates = (x, y)
radius = r
color = (r, g, b)
thickness = t

cv2.circle(image, center_coordinates, radius, color, thickness)

Π—Π΄Π΅ΡΡŒ "center_coordinates" - это ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΡ€ΡƒΠ³Π° (x, y), "radius" - радиус ΠΊΡ€ΡƒΠ³Π°, "color" - Ρ†Π²Π΅Ρ‚ ΠΊΡ€ΡƒΠ³Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (r, g, b), "thickness" - Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ ΠΊΡ€ΡƒΠ³Π°.

Π¨Π°Π³ 5: ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ изобраТСния

НаконСц, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ нашС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с нарисованным ΠΊΡ€ΡƒΠ³ΠΎΠΌ:

cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ѐункция cv2.imshow позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠΊΠ½Π΅ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС "Circle"). Ѐункция cv2.waitKey ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° cv2.destroyAllWindows Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ всС ΠΎΠΊΠ½Π°.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°

import cv2
import numpy

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого изобраТСния
height = 500
width = 500
image = numpy.zeros((height, width, 3), numpy.uint8)

# РисованиС ΠΊΡ€ΡƒΠ³Π°
center_coordinates = (250, 250)
radius = 100
color = (0, 255, 0)
thickness = 2
cv2.circle(image, center_coordinates, radius, color, thickness)

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ изобраТСния
cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаСт пустоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 500x500 пиксСлСй, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ рисуСт Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³ с радиусом 100 пиксСлСй ΠΈ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ 2 пиксСля. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "Circle".

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ cv2.circle Π² OpenCV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python для рисования ΠΊΡ€ΡƒΠ³ΠΎΠ² Π½Π° изобраТСниях. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenCV обСспСчиваСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния.

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

КАК ΠΠΠ Π˜Π‘ΠžΠ’ΠΠ’Π¬ ΠšΠ Π£Π“ Π’ ΠŸΠ˜Π’ΠžΠΠ•! #pythonprogramming #pythontutorial #python

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python OpenCV / Π£Ρ€ΠΎΠΊ #3 - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Draw with OpenCV - No more Photoshop! Graphic Design with Python!

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСлф Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ DataFrame Π² CSV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

πŸ“šΠ‘ΠΊΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΈΡ‚ΠΎΠ½? 🐍

πŸ–ŒοΈ Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV Python?

Как ΠΎΡ‚Π·Π΅Ρ€ΠΊΠ°Π»ΠΈΡ‚ΡŒ число Π² python ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ эффСкт Π·Π΅Ρ€ΠΊΠ°Π»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ APK Ρ„Π°ΠΉΠ» Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅: подробная инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

πŸ• Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Python: ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ