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

پروژه کنترل سروو موتور با پردازش تصویر OpenCV در بردهای آردوینو

نوشته شده توسط CiferTech

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

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

 


اوپن سی وی OpenCV


OpenCV یک کتابخانه نرم افزار بینایی رایانه ای و یادگیری ماشین منبع باز است. OpenCV به منظور ایجاد زیرساخت مشترک برای برنامه های دید رایانه ای و تسریع در استفاده از ادراک ماشین در محصولات تجاری ساخته شده است. OpenCV به عنوان یک محصول دارای مجوز BSD ، استفاده و اصلاح کد را برای مشاغل آسان می کند. OpenCV یا Open Computer Vision Library مجموعه ای از کتابخانه‌های برنامه‌نویسی پردازش تصویر و یادگیری ماشین است. این مجموعه بیشتر بر پردازش تصویر بی درنگ یا Real Time تمرکز دارد. در ابتدا توسط اینتل ساخته و پشتیبانی می‌شد و هم‌اکنون توسط Willow Garage و Itseez پشتیبانی می‌گردد. توسط سیستم عامل‌های ویندوز، لینوکس، مک اواس، آی او اِس و اندروید پشتیبانی می‌شود. همچنین دارای رابط برنامه‌نویسی به زبان‌های c/c++، پایتون، جاوا و متلب می‌باشد.

پردازش تصویر openCV - دیجی اسپارک


یادگیری ماشینی pre-trained models


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

 


برد آردوینو Arduino


مجموعه بردهای آردوینو از جمله بردهای توسعه پرطرفدار بین مهندسین امبدد هستند که در مدل های مختلفی از جمله Micro ,  proMini , Nano , Uno و همچنین Mega قابل تهیه هستند، هسته مرکزی این برد های محبوب از سری AtMega328 می باشد. آردوینو پلتفرم سخت‌افزاری و نرم‌افزاری متن‌باز است. همان طور که قبل تر اشاره کردیم، پلتفرم آردوینو شامل یک میکروکنترلر تک‌بردی متن‌باز است که قسمت سخت‌افزار آردوینو را تشکیل می‌دهد. علاوه بر این، پلتفرم آردوینو یک نرم‌افزار آردوینو IDE که به منظور برنامه‌نویسی برای بردهای آردوینو طراحی شده‌است و یک بوت لودر نرم‌افزاری که بر روی میکروکنترلر بارگذاری می‌شود را در بر می‌گیرد.

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

 


روش کار پروژه OpenCV با آردوینو


در پروژه سروو موتور با پردازش تصویر OpenCV از دو کد مختلف استفاده می‌کنیم، یک کد برای آردوینو که وظیفه فرمان دهی به سروو sg90 را دارد و کد دوم یک کد پایتون است که در سیستم شما اجرا می‌شود و متغییر های مربوط به سروو را تغییر می‌دهد با توجه به موقعیت چهره شما در تصویر و همچنین به کمک pyserial آردوینو و کد پایتون با یکدیگر ارتباط برقرار می‌کنند.

روش کار پروژه OpenCV با آردوینو - دیجی اسپارک

 


وسایل مورد نیاز


برد آردوینو Arduino

سروو موتور sg90

وسایل مورد نیاز پروژه OpenCV با آردوینو - دیجی اسپارک

 


کتابخانه های مورد نیاز


برای اجرای پروژه ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مرجع Servo می پردازیم. مراحل زیر را دنبال کنید.

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Servo را جستجو کنید.
  3. کتابخانه را نصب کنید.
  • این کتابخانه معمولا بصورت پیشفرض نصب می‌باشد.

 

در کد پایتون نیاز دارید چند کتابخانه را در محیط ادیتور خود نصب کنید، من از ادیتور pycharm استفاده می‌کنم. پکیج هایی که در تصویر مشخص شده را جستجو و نصب کنید. و این مورد را در نظر داشته باشید برای پردازش تصویر نیاز به پایتون ورژن ۳٫۷ داریم تا همزمان با pyserial قابل استفاده باشد.

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

 


اتصالات پروژه OpenCV با آردوینو


در پروژه openCV با آردوینو برای طول و عرض مرکز تصویر با چهره تشخیص داده شده از دو عدد سروو موتور استفاده می‌کنیم، یکی از آنها به پین ۹ دیگری به پین ۱۰ در آردوینو متصل شوند، تا در نتیجه با حرکت در حالت افقی و عمودی اقدام به تنظیم چهره شما در مرکز تصویر و دنبال کردن آن باشند.

اتصالات پروژه OpenCV با آردوینو Arduino و سرو موتور - دیجی اسپارک

 


کد های پروژه


  • کد آردوینو

  • در این بخش از کد با استفاده از پروتکل سریال مختصات تشخیص داده از چهره در تصویر یا x و y در آردوینو خوانده می‌شود.
 

  • این بخش از کد وظیفه تنظیم سروو در ناحیه مربع را دارد اگر مختصات خارج از محدوده مقادیر آن باشد.
 

  • این بخش از کد مانند کد بالا وظیه تنظیم سروو با مربع موجود در تصویر را دارد با این تفاوت که اگر درجه سروو ها خارج از محدوده مقادیر باشد.
 

  • کد آماده آپلود در آردوینو.

 

[/restrict]  

  • کد پایتون

  • در اولین قسمت از کد پایتون دوربین مورد استفاده را مشخص می‌کنیم، در صورت عدم وجود تصویر عدد موجود را تغییر دهید.
 

  • در این بخش پورت آردوینو مه از استفاده می‌کنیم را مشخص می‌کنیم، با تغییر مقدار موجود در کد زیر.
 

  • این خط کد وظیفه ارسال مقادیر x و y بدست آمده از تصویر به آردوینو به منظور به حرکت درآوردن سروو ها را دارد.
 

  • کد پایتون آماده اجرا در ادیتور مدنظر.

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

نکته: دقت داشته باشید پردازش تصویر در این پروژه نیاز به مدل هایی از پیش تعریف شده دارد و در پروژه ما مدلی برای تشخیص تصویر صورت انسان، برای این منظور از فایل زیر در کنار کد پایتون استفاده کنید. frontface model

 


نتیجه نهایی


پس آپلود کد در آردوینو و اجرای کد پایتون در صورتی که تمام موارد ذکر شده به درستی انجام شده باشد، در ادیتور صفحه وبکم برای شما باز خواهد شد که قادر به تشخیص چهره شما خواهد بود و در همین بین مقادیر برای آردوینو به کمک ارتباط سریال ارسال خواهد شد، و با توجه به شرط های موجود آردوینو با فرمان دهی به سروو ها سعی خواهد کرد تا موقعیت سروو ها با توجه به حرکت چهره شما در تصویر تغییر کند.

تشخیص چهره با آردوینو openCV - دیجی اسپارک

 


کلام آخر با سایفر


پروژه های پردازش تصویر از مواردی هستند که اجرا و ساخت آنها در عین حال چلش برانگیز بودن لذت بخش نیز خواهد بود و با پیشرفت ابزار های سخت‌افزاری و نرم‌افزاری برای پردازش تصویر قادر خواهیم بود این فرآیند را در برد های امبدد مانند esp32cam  و برد های این چنین اجرا و پیاده سازی کنیم که در این مورد چندین آموزش در سایت منتشر شده است.

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

 

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

 

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

CiferTech

فقط 10 نوع آدم در این دنیا وجود داره، اونی که باینری میفهمه و اونی که باینری نمیفهمه! ^-^

~ اینستاگرام: CiferTech

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

۱۱ دیدگاه

  • سلام مهندس اگر بخواهیم ارتباط بین opencv و آردوینو با ماژول بلوتوث باشه باید چیکار کنیم

  • با سلام و وقت بخیر
    من این پروژه رو دارم میسازم ولی توی قسمت پایتون ارور دارم موقع اجرای برنامه
    [ WARN:0@0.602] global D:\a\opencv-python\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (539) `anonymous-namespace’::SourceReaderCB::~SourceReaderCB terminating async callback
    در اخر هم این رو مینویسه
    Process finished with exit code 0

    ممنون میشم راهنمایی کنید

    • سلام، به نظر مشکل از پکیج نصب شده است، همچنین این مورد را در نظر داشته باشید کد پایتون را با پایتون ورژن ۳٫۷ اجرا کنید.

  • سلام مهندس ببخشید در آردوینو این امکان وجود داره که پردازش ویدئو انجام بشه
    به طور مشخص شناسایی و تعقیب اهداف متحرک به صورت بلادرنگ

    • سلام بله این امکان وجود دارد ولی آردوینو به کمک سیستم شما، یعنی کد پردازش تصویر در سیستم شما اجرا می‌شود و باقی کد در آردوینو و از طریق سریال باهم ارتباط برقرار می‌کنند.

      • ممنونم
        اگه بخوام تمام عملیات روی یک سیستم انجام بشه چی؟
        یعنی عملیات پردازش نمیتونه روی آردوینو صورت بگیره؟
        چه ماژولی شما پیشنهاد میدید؟

        • به کمک برد های ESP32cam چند آموزش در رابطه با پردازش تصویر نوشتم، اون هارو مطالعه کنید. با کمی کد نویسی میتونید کد اون پروژه هارو برای پروژه خودتون شخصی سازی کنید.

      • سلام مجدد پس توانایی اینکه به صورت تکی عمل کنه نداره
        ماژول دیگری می تونه این کار رو انجام بده