ماژول Pi Camera دوربینی است که برای عکسبرداری و ضبط ویدئوهای با کیفیت به کار میرود. بورد رزبریپای دارای یک رابط CSI (رابط سریال دوربین) میباشد که میتوان ماژول Pi Camera را مستقیما به آن وصل کرد.
ماژول Pi Camera را میتوان با استفاده از یک کابل ریبون ۱۵ پینه به پورت CSI رزبریپای متصل کرد.
ویژگیهای Pi Camera
در این مثال ما یک pi camera نسخه ۱.۳ داریم که ویژگیهای آن در زیر لیست شده است.
- وضوح تصویر: ۵ مگاپیکسل
- ضبط ویدئوی HD ،1080p @30fps ،720p @60fps ،960p @45fps و …
- میتواند عکسهای عریض (wide)، still (بدون حرکت) با رزولوشن ۱۹۴۴*۲۵۹۲ پیکسل بگیرد.
- ارتباط CSI فعال دارد.
چگونه Pi Camera را به رزبریپای وصل کنیم؟
Pi Camera را به صورت زیر به رابط CSI بورد رزبریپای متصل کنید.
اکنون، میتوان از Pi Camera برای گرفتن عکس و ویدئو از طریق رزبریپای استفاده کرد.
پیش از استفاده از دوربین، باید آن را فعال کنیم.
نحوهی فعالسازی قابلیت دوربین روی رزبریپای
برای فعالسازی دوربین روی رزبریپای، با استفاده از دستور زیر صفحهی پیکربندی رزبریپای را باز کنید.
sudo raspi-config
سپس گزینهی Interfacing Options را انتخاب کنید و در آن گزینهی camera را برای فعالسازی قابلیت دوربین انتخاب کنید.
رزبریپای را مجدداً راهاندازی کنید.
حال میتوان در رزبریپای به دوربین دسترسی داشت و میتوانیم با استفاده از Pi Camera روی رزبریپای عکس و ویدئو بگیریم.
مثال
گرفتن عکس و ذخیره آن در پوشه معین.
با استفاده از پایتون میتوانیم عکس بگیریم. در اینجا، یک برنامه پایتون برای گرفتن عکس با استفاده از Pi Camera مینویسیم. در این برنامه، از پکیج (کتابخانه) picamera استفاده کردهایم که کلاسهای مختلفی برای رزبریپای گردآوری کرده است. از بین آنها ما به کلاس PiCamera که مخصوص ماژول دوربین است علاقهمند هستیم.
برنامهی پایتون برای گرفتن عکس
''' capture images on Raspberry Pi using Pi Camera http://www.electronicwings.com ''' import picamera from time import sleep #create object for PiCamera class camera = picamera.PiCamera() #set resolution camera.resolution = (1024, 768) camera.brightness = 60 camera.start_preview() #add text on image camera.annotate_text = 'Hi Pi User' sleep(5) #store image camera.capture('image1.jpeg') camera.stop_preview()
توابع به کار رفته
برای استفاده از کتابخانهی پایتون picamera، باید آن را به برنامهی خود ضمیمه کنیم.
import picamera
کتابخانهی picamera، کلاس PiCamera را برای ماژول دوربین دربردارد. بنابراین، باید یک شی از کلاس PiCamera ایجاد کنیم.
کلاس PiCamera
برای استفاده از Pi Camera در پایتون، باید از کلاس PiCamera استفاده کنیم که APIهای مختلفی برای قابلیت دوربین فراهم آورده است. باید یک شی از این کلاس ایجاد کنیم.
مثال
Camera = picamera.PiCamera()
()Capture
این تابع برای گرفتن عکس با Pi Camera استفاده میشود.
مثال
Camera.capture(“/home/pi/image.jpeg”)
تابع ()capture پارامترهای مختلفی مانند resize ،format ،use_video_port و… دارد که برای عملیاتهای مختلفی استفاده میشوند.
مثال
Camera.capture(“/home/pi/image.jpeg”, resize=(720, 480))
Resolution=(width,height)
رزولوشنی که دوربین با آن عکس گرفته و ویدئو ذخیره کرده و پیشنمایشها نمایش داده میشوند را مشخص میکند. رزولوشن به صورت یک تاپل (width و height)، یک رشته به فرمت WIDTHxHEIGHT یا یک رشته دارای عبارات متداول رزولوشن تصویر، مانند «HD» ،«VGA» ،«1080p» و … تعیین میگردد.
مثال
Camera.resolution = (720, 480) Camera.resolution = “720 x 480” Camera.resolution = “720p” Camera.resolution = “HD”
”Annotate_text = “Text
برای اضافه کردن متن به تصویر، ویدئو و … استفاده میشود.
مثال
Camera.annotate_text = “Hi Pi User”
()start_preview
این تابع پیشنمایش پیشفرض یا با رزولوشن مشخص را نمایش میدهد.
مثال
Camera.start_preview()
()stop_preview
برای بستن پیشنمایش به کار میرود.
مثال
Camera.stop_preview()
نکته: APIهای مختلفی برای کلاس PiCamera موجود است. برای اطلاعات بیشتر میتوانید به APIهای PiCamera رجوع کنید.
برنامهی پایتون برای ضبط ویدئو
''' Record video on Raspberry Pi using pi Camera http://www.electronicwings.com ''' import picamera from time import sleep camera = picamera.PiCamera() camera.resolution = (640, 480) print() #start recording using pi camera camera.start_recording("/home/pi/demo.h264") #wait for video to record camera.wait_recording(20) #stop recording camera.stop_recording() camera.close() print("video recording stopped")
توابع به کاررفته
باید یک شی از کلاس PiCamera ایجاد کنیم. در اینجا، یک شی با نام camera ایجاد کردهایم.
()start_recording
این تابع ضبط ویدئو و ذخیره آن را آغاز میکند.
مثال
Camera.start_recording(‘demo.h264’)
در این مثال یک ویدئو با نام demo و فرمت h264 شروع میشود.
wait_recording(timeout)
اینکدر ویدئو را به مدت timeout ثانیه متوقف میکند.
مثال
Camera.wait_recording(60)
()stop_recording
این تابع برای پایان ضبط ویدئو به کار میرود.
مثال
Camera.stop_recording()
پخش ویدئوی ضبط شده
برای باز کردن ویدئو، میتوان از omxplayer با استفاده از کد زیر بهره گرفت.
omxplayer video_name
- منبع: ترجمه از سایت electronicwings.com
امیدواریم آموزش «اتصال ماژول Pi Camera به رزبریپای (پایتون)» براتون مفید واقع شده باشه.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.