ποΈ ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΡΠ³ Ρ ΠΏΠΎΠΌΠΎΡΡΡ 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 ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ.