در زیر یک نمونه کد برای گرفتن فریم هر یک ثانیه از دقیقه دوم ویدیو را میبینید:
import cv2
# باز کردن ویدیو
cap = cv2.VideoCapture('path_to_your_video.mp4')
# تعیین فریم بر ثانیه
fps = cap.get(cv2.CAP_PROP_FPS)
# شروع از دقیقه دوم
cap.set(cv2.CAP_PROP_POS_FRAMES, 2*60*fps)
# شماره فریم فعلی
frame_no = 2*60*fps
while(cap.isOpened()):
# خواندن فریم
ret, frame = cap.read()
if not ret:
break
# ذخیره فریم اگر شماره فریم بر fps بخش پذیر باشد (یعنی هر یک ثانیه)
if frame_no % fps == 0:
cv2.imwrite('frame_{}.png'.format(int(frame_no // fps)), frame)
# افزایش شماره فریم
frame_no += 1
# بستن ویدیو
cap.release()
cv2.destroyAllWindows()
لطفاً توجه داشته باشید که
path_to_your_video.mp4
باید با مسیر واقعی فایل ویدیوی شما جایگزین شود. همچنین، این کد فریمها را با نام
frame_x.png
ذخیره میکند که
x
شماره ثانیه است.
این کد فرض میکند که ویدیوی شما با سرعت ثابت پخش میشود. اگر ویدیوی شما دارای فریمهای متغیر است، باید از روشی پیچیدهتر برای محاسبه زمان فریمها استفاده کنید. اگر با این کد مشکل داشتید، لطفاً بیشتر توضیح دهید تا بتوانم بهتر کمک کنم.