πΠΠ°ΠΊ ΠΏΠΈΡΠΎΠ½ Π·Π°Π³Π»Π°ΡΡΠ²Π°Π΅Ρ Π΄ΠΎΠ±ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ: ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ³Π»ΠΎΡΠ΅Π½ΠΈΡ Π² Π΄ΠΈΠΊΠΎΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅π₯
ΠΠΈΡΠΎΠ½ Π·Π°Π³Π»Π°ΡΡΠ²Π°Π΅Ρ Π΄ΠΎΠ±ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OpenCV. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import cv2
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ
video_path = "ΠΏΡΡΡ_ΠΊ_Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Ρ.mp4"
video = cv2.VideoCapture(video_path)
# Π§ΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠ°Π΄Ρ Π·Π° ΠΊΠ°Π΄ΡΠΎΠΌ
while True:
ret, frame = video.read()
# ΠΡΠ»ΠΈ ΠΊΠ°Π΄Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½, ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΠΌ ΡΠΈΠΊΠ»
if not ret:
break
# ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ° ΡΡΡ
# ...
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π΄ΡΠ°
cv2.imshow("Video", frame)
# ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ "q"
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ²
video.release()
cv2.destroyAllWindows()
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠΈΡΠΎΠ½ Π·Π°Π³Π»Π°ΡΡΠ²Π°Π΅Ρ Π΄ΠΎΠ±ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ?
ΠΠΎΡΠΎΠ³ΠΎΠΉ ΡΡΡΠ΄Π΅Π½Ρ, Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Python Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ. Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΌ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ!
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
pip install opencv-python
pip install moviepy
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenCV ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²ΠΈΠ΄Π΅ΠΎ, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° MoviePy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Π°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ MoviePy Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ².
from moviepy.editor import VideoFileClip
video = VideoFileClip("ΠΏΡΡΡ_ΠΊ_Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Ρ.mp4")
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ `VideoFileClip` ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ `video`. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Ρ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
1. ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π΄ΡΠΎΠ²
Π§Π°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°Π΄ΡΡ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ `iter_frames`, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ ΠΊΠ°Π΄ΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ.
frames = []
for frame in video.iter_frames():
frames.append(frame)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ `frames` ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ°ΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΠ»Π° `for`. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ°Π΄ΡΠ°ΠΌ Π²Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ.
2. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ°
Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΊΠ°Π΄ΡΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°Π΄ΡΠ°, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠ»ΡΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΠΊΡΡ.
resized_frames = []
for frame in frames:
resized_frame = cv2.resize(frame, (640, 480))
resized_frames.append(resized_frame)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ° Π΄ΠΎ ΡΠΈΡΠΈΠ½Ρ 640 ΠΈ Π²ΡΡΠΎΡΡ 480 Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ `cv2.resize` ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΠΊΠ°Π΄ΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ `resized_frames`.
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ
ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΌΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈΠ»ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ `write_videofile` ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ MoviePy, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ».
output_video = "ΠΏΡΡΡ_ΠΊ_Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ_Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Ρ.mp4"
video_clip = VideoFileClip("ΠΏΡΡΡ_ΠΊ_Π²ΡΡ
ΠΎΠ΄Π½ΡΠΌ_ΠΊΠ°Π΄ΡΠ°ΠΌ.mp4")
video_clip.write_videofile(output_video)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ `output_video`, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΏΡΡΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Π°. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ `write_videofile` Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° `video_clip`, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΠΊΠ°Π΄ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenCV ΠΈ MoviePy Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². Π£Π΄Π°ΡΠΈ Π²Π°ΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!