π₯ ΠΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Python: ΠΏΡΠΎΡΡΡΠ΅ ΡΠ°Π³ΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
Π§ΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Python, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Pillow. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
from PIL import Image
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
image = Image.open("ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°.jpg")
# Π£Π΄Π°Π»ΡΠ΅ΠΌ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ
image.remove_watermark()
# Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°
image.save("Π½ΠΎΠ²ΠΎΠ΅_ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.jpg")
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Pillow ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅, Π·Π°ΠΏΡΡΡΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ pip install pillow.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² Python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. ΠΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OpenCV Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π²ΠΎΠ΄ΡΠ½ΡΡ Π·Π½Π°ΠΊΠΎΠ².
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV ΠΈ NumPy. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install opencv-python numpy
1. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ cv2.imread()
ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ:
import cv2
image = cv2.imread('path/to/image.jpg')
2. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ cv2.inRange()
Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ Π²ΠΎΠ΄ΡΠ½ΡΠΌ Π·Π½Π°ΠΊΠΎΠΌ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ Π²Π΅ΡΡ
Π½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BGR:
import numpy as np
# ΠΠ΅ΡΡ
Π½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°
lower_blue = np.array([100, 100, 100])
upper_blue = np.array([255, 255, 255])
# ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
mask = cv2.inRange(image, lower_blue, upper_blue)
3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΌΠ°ΡΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠΠ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ°ΡΠΊΠΎΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π²ΠΎΠ΄ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΠΊΡ:
# ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠΠ
result = cv2.bitwise_or(image, image, mask=255-mask)
4. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΡ
ΡΠ°Π½ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° Π½Π° Π΄ΠΈΡΠΊ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ cv2.imwrite()
, ΡΠΊΠ°Π·Π°Π² ΠΏΡΡΡ ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°:
cv2.imwrite('path/to/output.jpg', result)
ΠΠΎΠ»Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import cv2
import numpy as np
# 1. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
image = cv2.imread('path/to/image.jpg')
# 2. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°
lower_blue = np.array([100, 100, 100])
upper_blue = np.array([255, 255, 255])
mask = cv2.inRange(image, lower_blue, upper_blue)
# 3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°
result = cv2.bitwise_or(image, image, mask=255-mask)
# 4. Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
cv2.imwrite('path/to/output.jpg', result)
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Python. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΠΏΡΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡΡΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
Π£Π΄Π°ΡΠΈ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² Python!