خواندن فریم‌های یک ویدیو از دقیقه دوم - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

خواندن فریم‌های یک ویدیو از دقیقه دوم

0 امتیاز

چگونه می‌توان با استفاده از کتابخانه OpenCV در پایتون، فریم‌های یک ویدیو را از دقیقه دوم به بعد، هر یک ثانیه یکبار ذخیره کرد؟

 

سوال شده آذر 8, 1402  بوسیله ی tara_s (امتیاز 140)   3 15 20

1 پاسخ

0 امتیاز

 در زیر یک نمونه کد برای گرفتن فریم هر یک ثانیه از دقیقه دوم ویدیو را می‌بینید:

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 شماره ثانیه است.

این کد فرض می‌کند که ویدیوی شما با سرعت ثابت پخش می‌شود. اگر ویدیوی شما دارای فریم‌های متغیر است، باید از روشی پیچیده‌تر برای محاسبه زمان فریم‌ها استفاده کنید. اگر با این کد مشکل داشتید، لطفاً بیشتر توضیح دهید تا بتوانم بهتر کمک کنم.

 

پاسخ داده شده آذر 8, 1402 بوسیله ی Lori3 (امتیاز 857)   11 36 105
...