آموزش رزبری پای رزبری پای پردازش تصویر پروژه رزبری پای

آموزش پردازش تصویر OpenCV با رزبری پای – ذخیره تصویر و ویدیو

OpenCV-on-raspberry-pi-part-2--Digispark
نوشته شده توسط آرش کدخدایی

در ادامه مبحث بسیار جذاب و پر کاربرد پردازش تصویر، با نرم افزار OpenCV بخش دوم را شروع می‌کنیم. در آموزش قبلی با نحوه نصب opencv روی رزبری‌پای آشنا شدیم. بخش‌هایی از جمله حذف نرم افزارهای اضافی، دستورات نصب  OpenCV و تست موقیت آمیز بودن نصب Open CV در رزبری پای همگی توضیح داده شدند. بخش دوم آموزش نرم افزار OpenCV در رزبری پای از سه بخش تشکیل شده است. در بخش اول شیوه خواندن، ذخیره و نمایش عکس آموزش داده می‌شود. در بخش دوم شیوه خواندن و نمایش ویدیو و سپس در بخش سوم شیوه ذخیره سازی ویدیو بررسی می‌شود. در ادامه آموزش پردازش تصویر OpenCV رزبری پای با دیجی اسپارک، مرجع تخصصی رزبری پای به زبان فارسی همراه باشید.

 


۱- خواندن، نمایش و ذخیره تصویر


خواندن تصویر در OpenCV رزبری پای

از تابع زیر برای خواندن یک تصویر استفاده می‌شود.

در این تابع از دو آرگومان استفاده میشود که اولی آدرس کامل تصویر و دومی چگونگی خواندن تصویر داده شود که مشخصه‌های آن عبارتند از:

  • cv2.IMREAD_COLOR: بارگیری تصویر در حالت رنگی (این مشخصه پیش فرض میباشد.)
  • cv2.IMREAD_GRAYSCALE: بارگیری تصویر در حالت سیاه و سفید
  • cv2.IMREAD_UNCHANGED: تصویر را همانطور که هست بارگیری میکند (به همراه شفافیت)

 

به جای این مشخصه‌ها می‌توان از اعداد ۱,۰,-۱ استفاده کرد. نمونه کد استفاده از این تابع را در زیر میبنید که تصویر photo.jpg را در متغییر img ذخیره میکند و بعدا میتوان از آن استفاده کرد:

نرم افزار پردازش تصویر OpenCV با رزبری پای - دیجی اسپارک

 

نمایش تصویر در OpenCV

حال برای نمایش تصویر در یک پنجره با سایز تصویر از تابع زیر استفاده میکنیم:

در این تابع از دو آرگومان استفاده میشود که اولی نام پنجره و دومی متغییر تصویر میباشد.

نمونه کد نمایش تصویری که در مرحله قبلی خواندیم:

تابع cv2.waitKey () یک تابع متصل به کیبورد میباشد و آرگومان آن زمان به میلی ثانیه میباشد. این تابع به اندازه زمان داده شده در تابع منتظر یک کلید میماند و اگر زمان ۰ داده شود تا زمان فشار دادن کلید منتظر میماند.

تابع cv2.destroyAllWindows() تمامی پنجره هایی که در مراحل قبلی ساخته ایم میبندد. برای بستن یک پنجره خاص میتوان از تابع cv2.destroyWindow() استفاده کرد و از نام پنجره به عنوان آرگومان تابع استفاده کرد.

آموزش ذخیره تصویر در نرم افزار پردازش تصویر OpenCV با برد رزبری پای - دیجی اسپارک

 

ذخیره تصویر در نرم افزار OpenCV

برای ذخیره تصویر از تابع زیر استفاده میشود:

در این تابع از دو آرگومان استفاده میشود که اولین آرگومان نام فایل، آرگومان دوم متغییر تصویری است که می خواهید ذخیره کنید.

نمونه کد کلی از یک برنامه را در زیر میبینید که با دوربین رزبری پای Raspberry pi Camera عکس برداری میکند و عکس سیاه و سفید را میتوان ذخیره کرد:

نکته: برای سیستم های ۶۴ بیت از k = cv2.waitKey(0) & 0xFF و برای بقیه سیستم ها از k = cv2.waitKey(0) استفاده میشود.

نکته: کد اسکی کلید Esc عدد ۲۷ میباشد.

نکته: برای تعریف کلید از تابع ord(”) استفاده میکنید.

 


۲- خواندن و نمایش ویدیو در OpenCV


 

کار با فیلم و استفاده از دوربین رزبری پای

برای این بخش از یک نمونه کد استفاده میکنیم که فیلم را بصورت زنده از دوربین رزبری پای دریافت کرده و آن را بصورت سیاه و سفید نمایش میدهد:

کلاس PiRGBArray که آن را از طریق کتابخانه picamera.array وارد برنامه کرده ایم یک آرایه ۳ بعدی برای ما تولید میکند که در برنامه از آن استفاده میکنیم. با این خط کد رزولوشن دوربین را مشخص میکنیم:

سپس با خط کد زیر تصویر دوربین را وارد آرایه میکنیم و در rawCapture ذخیره میکنیم:

سپس با استفاده از یک حلقه شروع به فیلم برداری میکنیم و در frame ذخیره میکنیم:

اطلاعات آرایه را داخل image ذخیره میکنیم:

حال تصاویر را بصورت سیاه و سفید در gray ذخیره میکنیم:

تصویر را در پنجره Frame به نمایش در می‌آوریم:

با استفاده این قطعه کد اطلاعات آرایه را خالی میکنیم تا مجددا آن را با تصویر بعدی پر کنیم:

در آخر با فشار دادن کلید q برنامه بسته میشود.

نکته: برای استفاده از یک فیلم از ضبط شده میتوانید از نمونه کد زیر استفاده کنید:

نرم افزار پردازش تصویر OpenCV با رزبری پای - دیجی اسپارک

 


۳- ذخیره ویدیو در نرم افزار OpenCV


حال برای ذخیره ویدیو از نمونه کد زیر استفاده میکنیم که فیلم را برعکس کرده و شروع به ذخیره میکنید و با فشار دادن کلید q ضبط را متوقف کرده و ویدویو را با نام output.avi ذخیره میکند:

قطعه کد زیر کدک ذخیره سازی ویدیو را با FOURCC مشخص میکند(فرمت های قابل استفاده: DIVX, XVID, MJPG, X264, WMV1, WMV2):

قطعه کد بعدی دارای ۴ آرگومان است که به ترتیب نام فایل، کد fourcc، عدد فریم بر ثانیه و سایز ویدیو را مشخص میکنند:

با قطعه کد زیر تصویر را بصورت عمودی میچرخانیم(داری دو آرگومان است که اولی تصویر ما و دومی میتوانید اعداد ۰,۱,-۱ را بگیرد که برای چرخواندن در جهات مختلف است):

با این قطعه کد یکی یکی فریم ها را در فایل ویدیویی ذخیره میکنیم:

و با این قطعه کد فایل ویدیویی را میبندیم و ذخیره میکنیم:

امیدوارم این قسمت آموزش برای شما مفید واقع شده باشد.

 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک و دانشجوکیت  و digispark  و  daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

آرش کدخدایی

یک تازه کار علاقه مند به تکنولوژی :)

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه