فهرست مطالب:

دستگاه ردیابی صورت! پایتون و آردوینو: 5 مرحله
دستگاه ردیابی صورت! پایتون و آردوینو: 5 مرحله

تصویری: دستگاه ردیابی صورت! پایتون و آردوینو: 5 مرحله

تصویری: دستگاه ردیابی صورت! پایتون و آردوینو: 5 مرحله
تصویری: بهترین راه پول دراوردن از زبان اندروتیت؟!!!!@black and white. 1. 2024, نوامبر
Anonim
Image
Image
دستگاه ردیابی صورت! پایتون و آردوینو
دستگاه ردیابی صورت! پایتون و آردوینو
دستگاه ردیابی صورت! پایتون و آردوینو
دستگاه ردیابی صورت! پایتون و آردوینو

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

اینترنت اشیا: جعبه آب و هوا (با هشدارها و تایمرهای سفارشی)
اینترنت اشیا: جعبه آب و هوا (با هشدارها و تایمرهای سفارشی)
اینترنت اشیا: جعبه آب و هوا (با هشدارها و تایمرهای سفارشی)
اینترنت اشیا: جعبه آب و هوا (با هشدارها و تایمرهای سفارشی)
ربات خودکار چند منظوره: "دارایی"
ربات خودکار چند منظوره: "دارایی"
ربات خودکار چند منظوره: "دارایی"
ربات خودکار چند منظوره: "دارایی"

درباره: من فقط عاشق ساختن چیزهای جدید هستم. مانند موارد مربوط به کنترلرهای خرد ، مهندسی مکانیک ، هوش مصنوعی ، علوم کامپیوتر و هر چیزی که به من علاقه دارد. و در اینجا همه چیز را خواهید یافت … بیشتر درباره Techovator0819 »

با سلام به همه کسانی که این مطالب آموزشی را می خوانند. این یک دستگاه ردیابی چهره است که روی یک کتابخانه پایتون به نام OpenCV کار می کند. CV مخفف "Computer Vision" است. سپس یک رابط سریال بین رایانه شخصی خود و Arduino UNO ایجاد کردم. بنابراین این بدان معناست که این فقط بر روی پایتون کار نمی کند.

این دستگاه چهره شما را در کادر تشخیص می دهد ، سپس دستورات خاصی را به آردوینو ارسال می کند تا دوربین را طوری قرار دهد که در داخل قاب بماند! به نظر جالب می آید؟ بیایید سریع وارد آن شویم.

تدارکات

1. آردوینو UNO

2. 2 x Servo Motors (هر موتور سروو خوب خواهد بود اما من از Tower Pro SG90 استفاده کردم)

3. نصب پایتون

4. نصب OpenCV

5. دوربین وب

مرحله 1: نصب Python و OpenCV

نصب پایتون بسیار ساده است!

www.python.org/downloads/

برای بارگیری نسخه پایتون (مک ، ویندوز یا لینوکس) که مناسب شماست (64 بیت یا 32 بیت) می توانید از پیوند بالا استفاده کنید. بقیه مراحل نصب ساده است و رابط کاربری شما را راهنمایی می کند.

پس از اتمام نصب ، خط فرمان خود را باز کرده و موارد زیر را تایپ کنید:

pip نصب opencv-python

که باید کتابخانه openCV را نصب کند. در صورت بروز مشکل در عکاسی ، می توانید به این صفحه مراجعه کنید.

پس از تنظیم محیط و همه پیش نیازها ، بیایید ببینیم چگونه می توانیم این را واقعاً بسازیم!

مرحله 2: ویژگی های شبیه به Haar چیست؟

ویژگی های شبیه به Haar ویژگی های یک تصویر دیجیتالی هستند. این نام از موجک های Haar گرفته شده است. اینها خانواده ای از امواج مربع شکل هستند که برای شناسایی ویژگی های یک تصویر دیجیتال استفاده می شوند. آبشارهای هار اساساً طبقه بندی کننده ای است که به ما کمک می کند اشیاء (در صورت موردی ما) را با استفاده از ویژگی های شبیه حار تشخیص دهیم.

در مورد ما ، برای سادگی ، از آبشارهای از پیش آموزش دیده Haar Cascades برای شناسایی چهره ها استفاده می کنیم. شما می توانید این پیوند را در یک صفحه github دنبال کرده و فایل xml آبشار Haar را بارگیری کنید.

1. روی 'haarcascade_frontalface_alt.xml' کلیک کنید

2. روی دکمه "خام" در قسمت بالا سمت راست پنجره کد کلیک کنید.

3. شما را به صفحه دیگری با تنها متن هدایت می کند.

4. راست کلیک کرده و "Save as.." را فشار دهید.

5. آن را در همان پوشه یا پوشه کد پایتون که قصد نوشتن آن را دارید ذخیره کنید.

مرحله 3: برنامه نویسی در پایتون

واردات cv2

import numpy به عنوان np وارد کردن زمان وارد کردن سریال

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

ard = serial. Serial ("COM3" ، 9600)

ما یک شیء سریال به نام 'ard' ایجاد می کنیم. ما همچنین نام Port و BaudRate را به عنوان پارامترها مشخص می کنیم.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

ما یک شی دیگر برای آبشار هار خود ایجاد می کنیم. مطمئن شوید فایل HaarCascade در همان پوشه این برنامه پایتون باقی بماند.

vid = cv2. VideoCapture (0)

ما یک شیء ایجاد می کنیم که ویدیو را از وب کم ضبط می کند. 0 به عنوان پارامتر به معنی اولین وب کم است که به رایانه من متصل شده است.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

در حالی که True:

_، frame = vid.read ()#فریم فعلی را به فریم متغیر می خواند خاکستری = cv2.cvtColor (frame، cv2. COLOR_BGR2GRAY)#قاب را تبدیل می کند -> تصویر خاکستری#خط زیر چهره ها را تشخیص می دهد. #پارامتر اول تصویری است که می خواهید روی آن #minSize تشخیص دهید = () حداقل اندازه صورت را بر حسب پیکسل مشخص می کند #برای اطلاع بیشتر از طبقه بندی آبشار چهره ها = face_cascade.detectMultiScale (خاکستری ، minSize) روی پیوند بالا کلیک کنید. = (80 ، 80) ، minNeighbors = 3) حلقه #A برای تشخیص چهره ها. برای (x ، y ، w ، h) در صورتها: cv2 مستطیل (قاب ، (x ، y) ، (x+w ، y+h) ، (255 ، 0 ، 0) ، 2)#یک مستطیل در اطراف ترسیم می کند صورت Xpos = x+(w/2)#مختصات X مرکز صورت را محاسبه می کند. Ypos = y+(h/2) #محاسبه Y مختصات مرکز صورت در صورت Xpos> 280: #کد زیر بلاک می کند که صورت ard.write ('L'.encode ()) #on باشد سمت چپ ، راست ، بالا یا پایین با توجه به زمان. خواب (0.01) #مرکز قاب. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame '، frame)#قاب را در یک پنجره جداگانه نمایش می دهد. k = cv2.wait کلید (1) و 0xFF اگر (k == ord ('q')): #if 'q' روی صفحه کلید فشار داده شود ، از حلقه while خارج می شود. زنگ تفريح

cv2.destroyAllWindows () #همه پنجره ها را می بندد

ard.close () #ارتباط سریال را می بندد

vid.release () #دریافت ویدئو از وب کم را متوقف می کند.

مرحله 4: برنامه نویسی آردوینو

با خیال راحت برنامه را مطابق با تنظیمات سخت افزاری خود متناسب با نیازهای خود تغییر دهید.

#عبارتند از

سروو سروو؛

سرو سرو Y؛

int x = 90 ؛

int y = 90 ؛

void setup () {

// کد راه اندازی خود را در اینجا قرار دهید تا یکبار اجرا شود: Serial.begin (9600)؛ servoX.attach (9)؛ servoY.attach (10) ؛ servoX.write (x)؛ servoY.write (y) ؛ تاخیر (1000) ؛ }

char input = ""؛ // ورودی سریال در این متغیر ذخیره می شود

حلقه خالی () {

// کد اصلی خود را در اینجا قرار دهید ، تا بارها اجرا شود: if (Serial.available ()) {// بررسی می کند که آیا داده ای در ورودی بافر سریال وجود دارد = Serial.read ()؛ // داده ها را در یک متغیر if (input == 'U') {servoY.write (y+1)؛ // زاویه سروو را با توجه به ورودی y += 1 تنظیم می کند. // مقدار زاویه} else if (input == 'D') {servoY.write (y-1)؛ y -= 1 ؛ } else {servoY.write (y)؛ } if (input == 'L') {servoX.write (x-1)؛ x -= 1 ؛ } else if (input == 'R') {servoX.write (x+1)؛ x += 1 ؛ } else {servoX.write (x)؛ } input = ""؛ // متغیر را پاک می کند // // روند همچنان تکرار می شود !!:)}

مرحله 5: نتیجه گیری

این یک روش خوب و تعاملی است که از طریق آن می توانید Computer Vision را در پروژه های Arduino خود طراحی کنید. کامپیوتر دید در واقع کاملاً سرگرم کننده است. و من واقعاً امیدوارم که شما آن را دوست داشته باشید. اگر بله ، در نظرات به من اطلاع دهید. و لطفاً در کانال یوتیوب من مشترک شوید. پیشاپیش ممنون <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

توصیه شده: