فيديو الفاصل الزمني عبارة عن سلسلة من الصور يتم التقاطها على فترات منتظمة ثم يتم تجميعها معًا بشكل متسلسل لإنشاء مقطع فيديو. قد تستخدم مقاطع الفيديو ذات الفواصل الزمنية لتصوير التغيرات على مدار سنوات وضغط الفترة الزمنية في مقاطع فيديو موجز قصير. في هذا الدرس سنقوم بتنفيذ الفكرة باستخدام الراسبيري باي وإنتاج مقاطع فيديو ذات الفواصل الزمنية في التقاط تحرك الغيوم ، أو حركة المرور المزدحمة أو غروب الشمس، فبدلًا من تثبيت جوالك لتصوير مقاطع زمنية أو تثبيت الكاميرا يمكنك استخدام الراسبيري باي لذلك، أهم ما تحتاجه هو الحفاظ على الكاميرا ثابتة بينما تتحرك (الكائنات) ببطء.
المواد والأدوات
1X راسبيري باي
1X كاميرا
1X محول طاقة
1Xذاكرة
تهيئة الراسبيري باي
تثبيت النظام: في هذا الدرس سوف نستخدم نظام التشغيل (Buster) والذي يمكن تنصيبه على الراسبيري باي من خلال برنامج (RaspberryPi Imager) يمكن الرجوع للدرس بالرابط لمتابعة الخطوات.
التحكم بالراسبيري عن بعد: من المعلوم أنه يمكن توصيل الراسبيري باي بلوحة مفاتيح وفأرة للتحكم، مثل أي جهاز كومبيوتر، لكن إذا لم تتوفر لديك هذه الأدوات، يمكنك التحكم بالراسبيري عن بعد يمكن الرجوع للدرس بالرابط لمتابعة الخطوات
تثبيت الكاميرا: خيارات الكاميرات التي توفرها الراسبيري متعددة، ويمكن استخدام كاميرا الويب المعروفة (Webcam)في حال استخدمت كاميرا الراسبيري باي تأكد من توصيلها بالشكل الصحيح ، يجب أن توصل كافة التوصيلات قبل توصيل اللوحة بمنفذ الطاقة
يثبت شريط التوصيل الخاص بالكاميرا كما بالصورة
تأكد من أن الجزء الأزرق موجة باتجاه منافذ (USB)
البرمجة
نبدأ بعمل تحديثات النظام
sudo apt-get update sudo apt-get upgrade
نحتاج الآن لتفعيل الكاميرا وذلك من خلال كتابة السطر التالي:
sudo raspi-config
سوف تظهر لنا شاشة، يمكن الانتقال بين الخيارات عن طريق الأسهم على لوحة المفاتيح
اختر (Interface Options) بالسهم للأسفل
اختر (Select) بالسهم اليمين ثم انقر على (Enter)
اختر (Camera) بالنقر مباشرة على (Enter) بلوحة المفاتيح
ستظهر نافذة تفعيل اكاميرا اختر (Yes) ثم انقر على (Enter)
اختبار تفعيل الكاميرا من خلال السطرالتالي
raspistill -o test.jpg
ستجد أنه تم التقاط صورة و تخزينها في ملف /home/pi باسم (test)
الكود البرمجي
from picamera import PiCamera from os import system import datetime from time import sleep tlminutes = 0.5 #set this to the number of minutes you wish to run your timelapse camera secondsinterval = 1 #number of seconds delay between each photo taken fps = 3 #frames per second timelapse video numphotos = int((tlminutes*60)/secondsinterval) #number of photos to take print("number of photos to take = ", numphotos) dateraw= datetime.datetime.now() datetimeformat = dateraw.strftime("%Y-%m-%d_%H:%M") print("RPi started taking photos for your timelapse at: " + datetimeformat) camera = PiCamera() camera.resolution = (1024, 768) s.ystem("rm /home/pi/Pictures/*.jpg") #delete all photos in the Pictures folder before timelapse start for i in range(numphotos): camera.capture('/home/pi/Pictures/image{0:06d}.jpg'.format(i)) sleep(secondsinterval) print("Done taking photos.") print("Please standby as your timelapse video is created.") s.ystem('ffmpeg -r {} -f image2 -s 1024x768 -nostats -loglevel 0 -pattern_type glob -i "/home/pi/Pictures/*.jpg" -vcodec libx264 -crf 25 -pix_fmt yuv420p /home/pi/Videos/{}.mp4'.format(fps, datetimeformat)) #s.ystem('rm /home/pi/Pictures/*.jpg') print("Timelapse video is complete. Video saved as /home/pi/Videos/{}.mp4".format(datetimeformat))
شرح الكود البرمجي
سنقوم باستدعاء المكتبات التي تحتاجها لتنفيذ البرنامج
from picamera import PiCamera from os import system import datetime from time import sleep
سنقوم بانشاء عدة متغيرات تمثل عدد الصور و المدة الزمنية و الفرق الزمني بين كل لقطة و الأخرى، و عند بدء البرنامج سنقوم بطباعة عدد الصور
tlminutes = 0.5 #set this to the number of minutes you wish to run your timelapse camera secondsinterval = 1 #number of seconds delay between each photo taken fps = 3 #frames per second timelapse video numphotos = int((tlminutes*60)/secondsinterval) #number of photos to take print("number of photos to take = ", numphotos)
سنقوم بتحديد أبعاد الصورة بالبيكسل و حذف جميع الصور السابقة بالملف الذي سنحفظ به الصور (ملاحظة قم بحذف النقطة بعد حرف S في كلمة system)
dateraw= datetime.datetime.now() datetimeformat = dateraw.strftime("%Y-%m-%d_%H:%M") print("RPi started taking photos for your timelapse at: " + datetimeformat) camera = PiCamera() camera.resolution = (1024, 768) s.ystem("rm /home/pi/Pictures/*.jpg") #delete all photos in the Pictures folder before timelapse start
في دالة ال for سنعرف متغير يمثل الصورة و يتم تخزين الصور في الملف المطلوب
for i in range(numphotos): camera.capture('/home/pi/Pictures/image{0:06d}.jpg'.format(i)) sleep(secondsinterval) print("Done taking photos.") print("Please standby as your timelapse video is created.")
في السطر التالي سنقوم بتجميع الصور في ملف فيديو واحد (ملاحظة قم بحذف النقطة بعد حرف S في كلمة system)
s.ystem('ffmpeg -r {} -f image2 -s 1024x768 -nostats -loglevel 0 -pattern_type glob -i "/home/pi/Pictures/*.jpg" -vcodec libx264 -crf 25 -pix_fmt yuv420p /home/pi/Videos/{}.mp4'.format(fps, datetimeformat)) #s.ystem('rm /home/pi/Pictures/*.jpg') print("Timelapse video is complete. Video saved as /home/pi/Videos/{}.mp4".format(datetimeformat))
يجب أن تثبت الكاميرا بشكل جيد عند التصوير