πΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV:Π‘ΡΠΌΠΏΠ»Ρ
@python_loungeΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV
- ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠ΅ΠΉ ΠΈΠΌΠΏΠΎΡΡΠ°, ΡΠ°ΠΌΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΉ β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
import cv2
- Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
from cv2 import cv2
ΠΠ°Π³ΡΡΠ·ΠΊΠ°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
def loading_displaying_saving():
img = cv2.imread('girl.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('girl', img)
cv2.waitKey(0)
cv2.imwrite('graygirl.jpg', img)
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ cv2.imread(), Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΡΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° Π²ΡΠΎΡΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΡΠΈΡΠ°ΡΡ Π½Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π§ΡΠΎΠ±Ρ ΡΡΠΈΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² RGB β cv2.IMREAD_COLOR, Π² ΠΎΡΡΠ΅Π½ΠΊΠ°Ρ ΡΠ΅ΡΠΎΠ³ΠΎ β cv2.IMREAD_GRAYSCALE. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ cv2.IMREAD_COLOR. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 2D (Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΎΡΡΠ΅Π½ΠΊΠ°Ρ ΡΠ΅ΡΠΎΠ³ΠΎ) Π»ΠΈΠ±ΠΎ 3D (Π΄Π»Ρ ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ) ΠΌΠ°ΡΡΠΈΠ² NumPy. Π€ΠΎΡΠΌΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»Ρ ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: Π²ΡΡΠΎΡΠ° x ΡΠΈΡΠΈΠ½Π° x 3, Π³Π΄Π΅ 3 β ΡΡΠΎ Π±Π°ΠΉΡΡ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π±Π°ΠΉΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. Π ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Π² ΠΎΡΡΠ΅Π½ΠΊΠ°Ρ ΡΠ΅ΡΠΎΠ³ΠΎ Π²ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅: Π²ΡΡΠΎΡΠ° x ΡΠΈΡΠΈΠ½Π°.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ cv2.imshow() ΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠΊΡΠ°Π½Π΅. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°, Π° Π²ΡΠΎΡΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ Ρ Π΄ΠΈΡΠΊΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΄Π°Π»Π΅Π΅ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ cv2.waitKey(), ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ Π·Π°ΠΊΡΠΎΠ΅ΡΡΡ. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π»ΡΠ±Π°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° Π±ΡΠ»Π° Π·Π°ΡΡΠΈΡΠ°Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ 0. Π‘Π»Π΅Π²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΡΠ΅Π½ΠΊΠ°Ρ ΡΠ΅ΡΠΎΠ³ΠΎ, Π° ΡΠΏΡΠ°Π²Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB:

Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ cv2.imwrite() Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ» Π² ΡΠΎΡΠΌΠ°ΡΠ΅ jpg(Π΄Π°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ:png, tiff,jpeg,bmp ΠΈ Ρ.Β Π΄., ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΡΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ²), Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅, Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ.
ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΈ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π²ΡΡΠΎΡΡ, ΡΠΈΡΠΈΠ½Ρ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ shape:
print("ΠΡΡΠΎΡΠ°:"+str(img.shape[0]))
print("Π¨ΠΈΡΠΈΠ½Π°:" + str(img.shape[1]))
print("ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ²:" + str(img.shape[2]))
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΡΡΠ΅Π½ΠΊΠ°Ρ ΡΠ΅ΡΠΎΠ³ΠΎ img.shape[2] Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ 2D ΠΌΠ°ΡΡΠΈΠ²Π°.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π½Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ x ΠΈ y ΠΏΠΈΠΊΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV Ρ ΡΠ°Π½ΠΈΡ ΠΊΠ°Π½Π°Π»Ρ ΡΠΎΡΠΌΠ°ΡΠ° RGB Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΌΡ Π΄ΡΠΌΠ°Π΅ΠΌ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ, ΡΠΎ OpenCV Ρ ΡΠ°Π½ΠΈΡ ΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΈΠ½Π΅Π³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠΎΠ²:
(b, g, r) = img[0, 0]
print("ΠΡΠ°ΡΠ½ΡΠΉ: {}, ΠΠ΅Π»ΡΠ½ΡΠΉ: {}, Π‘ΠΈΠ½ΠΈΠΉ: {}".format(r, g, b))
CΠ½Π°ΡΠ°Π»Π° ΠΌΡ Π±Π΅ΡΡΠΌ ΠΏΠΈΠΊΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΡΠΎΡΠΊΠ΅ (0,0). ΠΠ°Π½Π½ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ, Π΄Π° ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ b, g ΠΈ r. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Π½Π° ΡΠΊΡΠ°Π½. ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ:
img[0, 0] = (255, 0, 0)
(b, g, r) = img[0, 0]
print("ΠΡΠ°ΡΠ½ΡΠΉ: {}, ΠΠ΅Π»ΡΠ½ΡΠΉ: {}, Π‘ΠΈΠ½ΠΈΠΉ: {}".format(r, g, b))
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡΠ΅Π»Ρ (0, 0) ΡΠ°Π²Π½ΡΠΌ (255, 0, 0), Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΡΠ½ΠΎΠ²Π° Π±Π΅ΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠ½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΡΠ²Π΅Π»ΠΎΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠ°ΡΠ½ΡΠΉ: 251, ΠΠ΅Π»ΡΠ½ΡΠΉ: 43, Π‘ΠΈΠ½ΠΈΠΉ: 65 ΠΡΠ°ΡΠ½ΡΠΉ: 0, ΠΠ΅Π»ΡΠ½ΡΠΉ: 0, Π‘ΠΈΠ½ΠΈΠΉ: 255